以下、本発明の最良の実施形態を図面に基づいて説明する。
[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には、固有のノードIDが割り当てられている。
そして、本実施形態に係るツリー型放送システムSは、これらのノードNnのうち、図1の上部枠100内に示すように、何れか複数のノードNnの参加により形成(構成)されるピアツーピア方式のネットワークシステムとなっている。なお、図1の上部枠100内に示すネットワーク9は、既存のネットワーク8を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク9(論理的なネットワーク)である。
このようなツリー型放送システムSにおいては、該システムSに参加(トポロジーに参加)している複数のノードNnが放送局10(放送装置の一例)を最上位として複数の階層を形成しつつネットワーク8を介してツリー状に接続され、当該放送局10から放送(例えばストリームミング配信方式で放送)されたコンテンツデータ(放送情報の一例)が、上流のノードNnから下流のノードNnに順次転送(ALM(Application Layer Multicast))されるようになっている。
また、ツリー型放送システムSにおいて形成されたトポロジーは、接続先紹介サーバ20(ノード紹介装置の一例)により管理されている。そして、接続先紹介サーバ20は、ノードNnからの接続先紹介要求に応じて当該ノードNnに対してツリー型放送システムSにおける接続先となる上流のノードNnを紹介するようになっている。
更に、ツリー型放送システムSにおいては、上り帯域がコンテンツデータの中継に適している(コンテンツデータを安定的に中継することができる程度に上り帯域が十分にある)ノードNnが優先的にコンテンツデータを中継するノード(以下、「中継ノード」という)として接続されるようになっており、中継に適していないノードNnが中継ノードとならないように(他のノードNnが自ノードの下位階層として当該自ノードと接続されないように)、トポロジーが形成される。そのため、ツリー型放送システムSにおいては、当該システムに参加するノードNnがコンテンツデータの中継に適しているか否かを判断するために、既に参加しているノードNnの何れかを帯域測定用のサーバ(以下、「帯域測定サーバノード」という)とし、参加するノードNnから帯域測定サーバノードへ帯域測定用のデータを送信することにより、当該参加するノードNnの上り帯域を測定する。帯域測定サーバノードの候補は、接続先紹介サーバ20が各ノードNnのコンテンツデータの受信品質等に基づいて決定し、トポロジーに参加するノードNnは、この候補の中から帯域測定サーバノードとなるノードNnを選択する。
図2及び図3は、ノードN13がツリー型放送システムSへの参加する際の様子を示した概念図である。また、図4は、接続の要求を受けたノードNnがコンテンツデータの中継に適していない場合に、当該ノードNnの再接続と、接続を要求したノードNnの接続の様子を示した概念図である。
図2の例において、ノードN13がツリー型放送システムSに参加(言い換えれば、トポロジーに参加)する場合、先ず、当該ノードN13は、接続先紹介サーバ20へ、帯域測定サーバノード紹介要求メッセージ(M)(紹介要求情報の一例)を送信する(1)。接続先紹介サーバ20は、内部で管理している帯域測定サーバノードテーブルの中から帯域測定サーバノードの候補となるノードNnを検索し、1以上の帯域測定サーバノード候補のネットワークアドレス情報(例えば、IP(Internet Protocol)アドレス及びポート番号)等を含む帯域測定サーバノード候補紹介メッセージをノードN13へ返送(帯域測定サーバノード候補を紹介)する(2)。次に、ノードN13は、接続先紹介サーバ20から取得した帯域測定サーバノード候補の中から一つの例えばノードN2を選択し、当該ノードN2へ帯域測定要求メッセージを送信すると(3)、ノードN2は、ノードN13へ帯域測定許可応答メッセージを返信する(4)。次に、ノードN13は、ノードN2へ帯域測定用データ(測定用の情報の一例)を送信する(5)。すると、ノードN2は、帯域測定用データの受信の際のビットレート(転送効率)を算出し、算出した結果(測定結果)を含む測定結果メッセージをノードN13へ送信する(6)。そして、ノードN13は、測定結果メッセージに含まれる測定結果を保存することによって、ノードN13の上り帯域の測定が完了する。
帯域測定が完了すると、図3の例に示すように、ノードN13は、接続先紹介サーバ20へ上流ノード紹介要求メッセージを送信する(7)。接続先紹介サーバ20は、内部で管理しているトポロジー管理情報の中から下流側に接続が可能な(下流側に直接接続されたノード数が接続許容数に達していない)ノードNnを検索し、1以上の上流ノード候補のネットワークアドレス情報等を含む上流ノード候補紹介メッセージをノードN13へ返信(接続可能ノード紹介)する(8)。次に、ノードN13は、接続先紹介サーバ20から取得した上流ノード候補の中から一つの例えばノードN6を選択し、当該ノードN6へ接続要求メッセージを送信する(9)。次に、ノードN6は、内部で保存している自己の上り帯域の測定結果に基づいて、自ノードがコンテンツの中継に適していると判定した場合には、内部で管理しているノード管理テーブルにノードN13の情報を追加し、ノードN13へ接続許可応答メッセージを返信する(10)。次に、ノードN13は、ノードN6へストリーム開始要求メッセージを送信する(11)。最後に、ノードN6は、装置内部にストリーム中継用のオブジェクトを準備し、ノードN13に対してストリーミングを開始する(12)。こうして、ツリー型放送システムSへのノードN13の参加が完了する。
そして、ノードN13がツリー型放送システムSから脱退(離脱)する場合、当該ノードN13は、ストリーム供給元である上流のノードN6に対してストリーム停止要求メッセージと接続解除要求メッセージを送信する。これに応じて、ノードN6は、ストリーム中継用オブジェクトを破棄することでノードN13に対するストリーミングを停止し、同時にノード管理テーブルからノードN13の情報を削除することでノードN6との接続関係を断ち切る。
前記(9)において、接続要求メッセージを受信したノードN6が、自ノードはコンテンツの中継に適していないと判定した場合には、図4(A)に示すように、自己の上流に(上位階層として)接続されているノードN2との接続を切断する(13)。次に、ノードN6は、ノードN2のネットワークアドレス情報等を含む上流ノード接続指示メッセージをノードN13へ送信する(14)。次に、ノードN6は、接続先紹介サーバ20から紹介(前記(1)及び(2)と同様)された上流ノード候補の中から例えばノードN12を選択し、当該ノードN12へ接続要求メッセージを送信する(15)。一方、上流ノード接続指示メッセージを受信したノードN13は、ノードN2へ接続要求メッセージを送信する(16)。こうして、図4(B)に示すように、ノードN6はノードN12と接続し、ノードN13はノードN2と接続する。
[1−2.放送局10の構成等]
次に、図5を参照して、放送局10の構成及び機能について説明する。
図5は、放送局10の概要構成例を示す図である。
放送局10は、図5に示すように、主電源101、主記憶装置102、ハードディスク装置103、CPU104、ネットワークインタフェース105、周辺機器制御チップ106、ビデオチップ107、音源チップ108、キーボード109、マウス110、ディスプレイ111、及び内蔵スピーカ112等を備えて構成されている。また、主電源101、主記憶装置102、ハードディスク装置103、CPU104、ネットワークインタフェース105、周辺機器制御チップ106、ビデオチップ107、及び音源チップ108は、システムバス113を介して相互に接続されている。また、放送局10は、ルータ114を介してネットワーク8に接続される。
主記憶装置102は、RAM及びROM等を備えて構成されており、オペレーティングシステム、ストリーム制御プログラム、画面制御プログラム、トポロジー制御プログラム、及びデコーダ(プログラム)等が記憶されている。また、主記憶装置102は、ノード管理テーブルを記憶しており、該ノード管理テーブルには、放送局10に接続されたノードNnの情報(例えば、IPアドレス及びポート番号等)が登録される。また、主記憶装置102は、バッファメモリ(例えば、リングバッファ)を有する。
また、ハードディスク装置103には、放送用コンテンツデータが記録されている。
CPU104は、主記憶装置102に記憶された各種プログラムにしたがって(つまり、プログラムの実行により)、例えばハードディスク装置103に記録されたコンテンツデータをパケット化し、ノード管理テーブルに登録されたノードNnに対して放送(ストリーム配信)する放送処理を行う。
なお、このような放送局10として、専用の放送サーバの他、何れかのノードNnが適用されても良い。
[1−3.接続先紹介サーバ20の構成等]
次に、図6及び図7を参照して、接続先紹介サーバ20の構成及び機能について説明する。
図6は、接続先紹介サーバ20の概要構成例を示す図である。また、図7(A)は、視聴ノードテーブルに登録される内容の例を示す図であり、図7(B)は、帯域測定サーバノードテーブルに登録される内容の例を示す図である。
接続先紹介サーバ20は、図6に示すように、主電源201、主記憶装置202、ハードディスク装置203、CPU204、ネットワークインタフェース205、周辺機器制御チップ206、ビデオチップ207、キーボード208、マウス209、及びディスプレイ210等を備えて構成されている。また、主電源201、主記憶装置202、ハードディスク装置203、CPU204、ネットワークインタフェース205、周辺機器制御チップ206、及びビデオチップ207は、システムバス211を介して相互に接続されている。また、接続先紹介サーバ20は、ルータ212を介してネットワーク8に接続される。
主記憶装置202は、RAM及びROM等を備えて構成されており、オペレーティングシステム、放送局管理プログラム、トポロジー管理プログラム、接続先紹介プログラム、帯域測定サーバノード紹介プログラム(ノード紹介処理プログラムの一例)及び運用管理プログラム等のサーバ処理プログラムが記憶されている。なお、サーバ処理プログラムは、例えば、ネットワーク8上の所定のサーバからダウンロードされるようにしても良いし、例えば、CD−ROM等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
ハードディスク装置203には、放送局管理データベースが構築されている。放送局管理データベースには、各放送局10の所在情報(例えば、IPアドレス及びポート番号等)が放送チャンネル情報(例えばチャンネル番号)に対応付けられて登録される。
また、ハードディスク装置203には、視聴ノードテーブル及び帯域測定サーバノードテーブルが記憶される。視聴ノードテーブルは、放送チャンネル毎に存在し、放送チャンネル情報に対応付けられている。そして、視聴ノードテーブルには、例えば、図7(A)に示すように、トポロジーに参加している各ノードNn毎に、ネットワークアドレス情報(例えばIPアドレス及びポート番号)、現在接続されている上流のノードNnを示す情報(例えばノードID)、現在接続されている下流のノードNnを示す情報(例えば、ノードID)、現在接続されている下流のノードNnの接続数、下流のノードNnの接続許容数(例えば、2、これより多くても良い)、コンテンツデータの受信品質(受信品質情報の一例)等の情報が、対応付けられて視聴ノード情報として登録される。ここで、コンテンツデータの受信品質は、例えば、受信品質が良い又は悪いを示す情報である。
帯域測定サーバノードテーブルは、放送チャンネル毎に存在し、視聴ノードテーブルに対応付けられている。そして、帯域測定サーバノードテーブルには、例えば、図7(B)に示すように、帯域測定サーバノードの候補としての条件を満たすノードNn毎に、ネットワークアドレス情報、帯域測定サーバノードの候補として紹介された日時を示す紹介日時(紹介時刻情報の一例)等の情報が、対応付けられてサーバノード情報として登録される。ここで、帯域測定サーバノードの候補としての条件を満たすノードとは、対応する視聴ノードテーブルに登録されている(対応する放送チャンネルのトポロジーに参加している)ノードのうち、受信品質が良いノードのことをいう。
CPU204は、主記憶装置202に記憶された各種プログラムにしたがって、各種処理を実行するとともに、本発明における受信品質情報取得手段、受信品質情報記憶手段、紹介要求情報受信手段、ノード選定手段、紹介情報送信手段及び紹介日時情報記憶手段等として機能する。
例えば、CPU204は、ツリー型放送システムS(各放送チャンネルのトポロジー)に参加し、コンテンツデータを受信している各ノードNnから、コンテンツの視聴状態等を示す視聴中報告メッセージを受信し、当該視聴中報告メッセージから、受信パケット損失レート(本発明における受信品質情報の他の例)を取得する。そして、CPU204は、受信パケット損失レートからコンテンツデータの受信品質を判断し(例えば、受信パケット損失レートが所定値以上であれば、良い、受信パケット損失レートが所定値未満でであれば、悪い、と判断する)、当該判断結果を、視聴中報告メッセージの受信元であるノードNn(以下、「報告ノード」という)に対応する受信品質として視聴ノードテーブルに設定する。このとき、CPU204は、報告ノードの受信品質が良いと判断した場合には、当該報告ノードを帯域測定サーバノードテーブルに登録する(登録されていない場合)、一方、報告ノードの受信品質が悪いと判断した場合には、当該報告ノードを帯域測定サーバノードテーブルから削除する(登録されている場合)。なお、トランスポート層のプロトコルとしてTCP(Transmission Control Protocol)を使用し、TCPをベースとしてストリーミングを実現している場合には、受信品質を示す情報として受信ビットレートを使用しても良い。TCPであれば、パケット損失が発生した場合には、損失したパケットの再送がトランスポート層のレベルで行われることによって、受信ビットレートが低くなることから、当該情報から受信品質を判断することが可能である。
また、CPU204は、新たにトポロジーへ参加希望するノードNnから帯域測定サーバ紹介要求メッセージを受信すると、帯域測定サーバノードテーブルに登録されたノードNnから、帯域測定サーバノードの候補を検索し、1以上の候補を選定する。このとき、CPU204は、先ず、帯域測定サーバノードの候補として紹介されていない(帯域測定サーバノードテーブル上で紹介日時が未設定である)ノードNnを優先的に選定し、次いで、帯域測定サーバノードとして紹介された日時が最も古いノードNnから古い順に優先的に選定する。そして、CPU204は、選定した候補のネットワークアドレス情報を含む帯域測定サーバノード候補紹介メッセージを、要求元のノードNnに送信すると、帯域測定サーバノードテーブル上における当該候補の紹介日時に現在日時を設定する。
なお、CPU204は、帯域測定サーバノードの候補を選定する際に、トポロジー上においてより上位階層のノードNnから階層が高い順に優先的に設定しても良い。コンテンツデータの中継に適していない(上り帯域が十分ではない)ノードNnは、図4を用いて説明した再接続によって、最下位の階層または最下位に近い階層に追いやられる可能性が高く、これによって、コンテンツデータの中継が安定して行われているノードNnほど、より上位の階層に位置している可能性が高くなる。それゆえ、より上位階層のノードNnを帯域測定サーバノードとすることで、安定的に精度良く帯域測定をすることができる可能性が高まる。この場合においては、例えば、CPU204は、候補として紹介されていないノードNnが多数存在する場合には、その紹介されていない複数のノードNnの中で最上位に位置するノードNnを選定しても良いし、帯域測定サーバノードとして紹介された日時が古いノードNnから優先的に選定する際に、必要とする数よりも多めに選定し、その中から、より上位に位置するノードNnから順に必要数に達するまで絞り込んで選定しても良い。
また、CPU204は、自己の上り帯域の測定を行ったノードNnからの接続先紹介要求に応じて視聴ノードテーブルから下流に接続可能なノードNnを検索し、検索された1以上のノードNnの候補を接続先として紹介する紹介処理を行う。
[1−4.ノードNnの構成等]
次に、図8を参照して、ノードNnの構成及び機能について説明する。
図8は、ノードNnの概要構成例を示す図である。
ノードNnは、図8に示すように、主電源301、主記憶装置302、ハードディスク装置303、CPU304、ネットワークインタフェース305、周辺機器制御チップ306、ビデオチップ307、音源チップ308、キーボード309、マウス310、ディスプレイ311、及び内蔵スピーカ312等を備えて構成されている。また、補助電源301b、主記憶装置302、ハードディスク装置303、CPU304、ネットワークインタフェース305、周辺機器制御チップ306、ビデオチップ307、及び音源チップ308は、システムバス313を介して相互に接続されている。また、ノードNnは、ルータ314を介してネットワーク8に接続される。
なお、ノードNnとしては、PC、STB(Set Top Box)、或いは、TV受信機等を適用可能である。
主記憶装置302は、RAM及びROM等を備えて構成されており、オペレーティングシステム、画面制御プログラム、ストリーム制御プログラム、トポロジー制御プログラム、及びデコーダ等が記憶されている。これら各種プログラムは、例えば、ネットワーク8上の所定のサーバからダウンロードされるようにしても良いし、例えば、CD−ROM等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
また、主記憶装置302には、受信したコンテンツデータを一時的に蓄積するためのバッファメモリ(例えば、リングバッファ)を有する。また、主記憶装置302は、ノード管理テーブルを記憶している。ノード管理テーブルには、自ノード(自己)に接続されている下流のノードNnのネットワークアドレス情報(IPアドレス及びポート番号等)が登録される。更に、主記憶装置302には、自ノードの上り帯域の測定結果を含む自ノード情報が記憶される。
そして、CPU304は、主記憶装置302に記憶された各種プログラム(本発明のノード処理プログラムを含む)にしたがって、ツリー型放送システムS(ある放送チャンネルに係るトポロジー)に参加するための参加処理を実行し、参加後に放送局10又は上流ノードNnから放送されネットワークインタフェース305を介して受信されたコンテンツデータのパケット(コンテンツストリーム)をバッファリングさせつつ再生処理を行う。
ここで、上記参加処理では、先ず、接続先紹介サーバ20に対して帯域測定サーバノード紹介要求がなされ、接続先紹介サーバ20から紹介された帯域測定サーバノードに接続(セッション確立)して帯域測定が行われる。次いで、接続先紹介サーバ20に対して接続先紹介要求がなされ、接続先紹介サーバ20から紹介された上流のノードNnに接続(セッション確立)してストリーム開始要求がなされる。
また、上記再生処理では、受信されバッファメモリに蓄積されたコンテンツデータ(例えば、ビデオデータ及びオーディオデータ)が読み出されデコーダによりデコードされる。そして、デコードされたビデオデータ(映像情報)がビデオチップ307を通じてディスプレイ311に出力され、デコードされたオーディオデータ(音声情報)が音源チップ308を通じて内蔵スピーカ312(又は図示しない外部スピーカ)から出力される。また、上記再生処理では、コンテンツデータ受信の際のパケット損失レートが測定され、一定時間間隔で、当該パケット損失レートを含む視聴中報告メッセージが接続先紹介サーバ20に送信される。
また、自ノードに下流のノードNnが接続されている場合、CPU304は、バッファメモリに蓄積されたコンテンツデータの各パケットを当該下流のノードNnに転送(コンテンツストリームの中継)する転送処理を行う。
更に、CPU304は、下流のノードNnからストリーム停止要求メッセージと接続解除要求メッセージを受信した場合、当該ノードNnに対するストリーミングを停止し、ノード管理テーブルから当該ノードNnの情報を削除することで当該ノードNnとの接続を解除する。
[2.ツリー型放送システムSの動作]
次に、図9乃至図12を参照して、本実施形態に係るツリー型放送システムSの動作について説明する。
図9は、接続先紹介サーバ20におけるCPU204により実行される処理を示すフローチャートである。
図9の処理は、例えば接続先紹介サーバ20の電源がONとされた場合に開始される。先ず、CPU204は、接続先紹介サーバ20として機能するための各種の初期化処理を実行すると(ステップS1)、ノードNnからのメッセージ受信待ちに移行し(ステップS2)、管理者等によりキーボード208やマウス209が操作されること等によって、シャットダウンが指示されたか否かを判定する(ステップS3)。
このとき、CPU204は、シャットダウンが指示された場合には(ステップS3:YES)、当該処理を終了させ、シャットダウンが指示されていない場合には(ステップS3:NO)、上流ノード紹介要求メッセージを受信したか否かを判定する(ステップS4)。このときCPU204は、上流ノード紹介要求メッセージを受信した場合には(ステップS4:YES)、ステップS5に移行し、上流ノード紹介要求メッセージを受信していない場合には(ステップS4:NO)、ステップS7に移行する。
ステップS5に移行したCPU204は、視聴ノードテーブルから接続先候補のノードNnを1以上検索する。次いで、CPU204は、検索したノードNnのネットワークアドレス情報を視聴ノードテーブルから取得し、当該情報を含む上流ノード候補紹介メッセージを、上流ノード紹介要求メッセージを送信してきたノードNnに送信する(ステップS6)。CPU204は、当該処理を終えると、メッセージ受信待ちに移行する(ステップS2)。
一方、ステップS7に移行したCPU204は、帯域測定サーバノード紹介要求メッセージを受信したか否かを判定する。このとき、CPU204は、帯域測定サーバノード紹介要求メッセージを受信した場合には(ステップS7:YES)、ステップS8に移行し、帯域測定サーバノード紹介要求メッセージを受信していない場合には(ステップS7:NO)、ステップS11に移行する。
ステップS8に移行したCPU204は、帯域測定サーバノードテーブルから帯域測定サーバノードの候補となるノードNnを1以上検索する。例えば、CPU204は、帯域測定サーバノードテーブルに登録されているノードNnのうち、紹介日時が設定されていないノードNnの中から必要な数の候補を選定する。また、CPU204は、選定したノードNnの数が必要数に足りない場合には、帯域測定サーバノードテーブルに登録されているノードNnのうち紹介日時が最も古いものから古い順に必要数に達するまで候補を選定する。CPU204は、帯域測定サーバノードの候補となるノードNnを検索すると、帯域測定サーバノードテーブルから当該検索したノードNnのネットワークアドレス情報を取得し、当該情報を含む帯域測定サーバノード候補紹介メッセージを、帯域測定サーバノード紹介要求メッセージを送信してきたノードNnに送信する(ステップS9)。次いで、CPU204は、検索したノードNnの紹介日時に現在日時を設定することによって紹介日時を更新すると(ステップS10)、メッセージ受信待ちに移行する(ステップS2)。
一方、ステップS11に移行したCPU204は、接続完了通知メッセージを受信したか否かを判定する。このとき、CPU204は、接続完了通知メッセージを受信した場合には(ステップS11:YES)、ステップS12に移行し、接続完了通知メッセージを受信していない場合には(ステップS11:NO)、ステップS13に移行する。
ステップS12に移行したCPU204は、接続完了通知メッセージを送信してきたノードNnの視聴ノード情報を視聴ノードテーブルに追加登録する。具体的に、CPU204は、当該メッセージに設定されているメッセージ送信元のノードNnのネットワークアドレス情報、当該ノードNnの上流として接続されたノードNnを示す情報等を、視聴ノード情報として登録する。CPU204は、当該処理を終えると、メッセージ受信待ちに移行する(ステップS2)。
一方、ステップS13に移行したCPU204は、離脱通知メッセージを受信したか否かを判定する。このとき、CPU204は、離脱通知メッセージを受信した場合には(ステップS13:YES)、ステップS14に移行し、離脱通知メッセージを受信していない場合には(ステップS13:NO)、ステップS17に移行する。
ステップS14に移行したCPU204は、離脱通知メッセージを送信してきたノードNnの視聴ノード情報を視聴ノードテーブルから削除する(ステップS14)。次いで、CPU204は、当該ノードNnのサーバノード情報が帯域測定サーバノードテーブルに存在するか否かを判定する(ステップS15)。このとき、CPU204は、当該サーバノード情報が存在しない場合には(ステップS15:NO)、メッセージ受信待ちに移行し(ステップS2)、当該サーバノード情報が存在する場合には(ステップS15:YES)、当該サーバノード情報を帯域測定サーバノードテーブルから削除して(ステップS16)、メッセージ受信待ちに移行する(ステップS2)。
一方、ステップS17に移行したCPU204は、視聴中報告メッセージを受信したか否かを判定する。このとき、CPU204は、視聴中報告メッセージを受信した場合には(ステップS17:YES)、ステップS18に移行し、視聴中報告メッセージを受信していない場合には(ステップS17:NO)、メッセージ受信待ちに移行する(ステップS2)。
ステップS18に移行したCPU204は、視聴ノードテーブルを更新する。具体的に、CPU204は、視聴中報告メッセージに含まれる例えばパケット損失レート等に基づいて受信品質の良否を判定し、当該判定結果を当該メッセージを送信してきたノードNnの受信品質として視聴ノードテーブルに上書き設定する。次いで、CPU204は、当該ノードNnの受信品質が良いか否かを判定する(ステップS19)。このとき、CPU204は、受信品質が悪い場合には(ステップS19:NO)、ステップS15に移行し、受信品質が良い場合には(ステップS19:YES)、ステップS20に移行する。
ステップS20に移行したCPU204は、視聴中報告メッセージを送信してきたノードNnのサーバノード情報が帯域測定サーバノードテーブルに存在するか否かを判定する。このとき、CPU204は、当該サーバノード情報が存在する場合には(ステップS20:NO)、メッセージ受信待ちに移行し(ステップS2)、当該サーバノード情報が存在しない場合には(ステップS20:YES)、当該サーバノード情報を帯域測定サーバノードテーブルに追加登録する(ステップS21)。具体的に、CPU204は、視聴ノードテーブルに設定されている当該ノードNnのネットワーク情報を含み、紹介日時を未設定とするサーバノード情報を帯域測定サーバノードテーブルに登録する。CPU204は、当該処理を終えると、メッセージ受信待ちに移行する(ステップS2)。
図10及び図11は、ノードNnにおけるCPU304により実行される処理を示すフローチャートである。
図10及び図11の処理は、例えば利用者の指示に基づいて、ツリー型放送システムSに参加するためのプログラムが起動された場合に開始される。先ず、ノードNnのCPU304は、ツリー型放送システムSに参加するための各種の初期化処理を実行すると(ステップS21)、図12を用いて後述する帯域測定処理を実行する(ステップS22)。
次いで、CPU304は、プログラムの終了命令を利用者から受けたか否かを判定する(ステップS23)。このとき、CPU304は、終了命令を受けた場合には(ステップS23:YES)、ステップS24に移行し、終了命令を受けていない場合には(ステップS23:NO)、ステップS25に移行する。
ステップS24に移行したCPU304は、プログラムを終了させるための各種処理を実行し、当該処理を終了させる。
一方、ステップS25に移行したCPU304は、ある放送チャンネルのトポロジーへの接続開始命令を利用者から受けたか否かを判定する。このとき、CPU304は、接続開始命令を受けていない場合には(ステップS25:NO)、ステップS23に移行し、接続開始命令を受けた場合には(ステップS25:YES)、接続先紹介サーバ20に、上流ノード候補の問い合わせを行う(ステップS26)。具体的に、CPU304は、上流ノード紹介要求メッセージを接続先紹介サーバ20に送信し、これに応じて接続先紹介サーバ20から送信されてきた上流ノード候補紹介メッセージを受信する。
次いで、CPU304は、こうして取得した上流ノード候補の中から上流ノードとして接続するノードNnを選択する(ステップS27)。次いで、CPU304は、選択したノードNnのネットワークアドレス情報等を上流ノード候補紹介メッセージから取得すると、当該情報に基づいて、当該ノードNnに接続要求メッセージを送信し(ステップS28)、これに応じて当該ノードNnから送信されてきた応答メッセージを受信する(ステップS29)。
次いで、CPU304は、応答メッセージが接続許可応答メッセージであるか否かを判定する(ステップS30)。このとき、CPU304は、応答メッセージが接続許可応答メッセージではない場合、つまり、応答メッセージが上流ノード接続指示メッセージである場合には(ステップS30:NO)、ステップ31に移行し、応答メッセージが接続許可応答メッセージである場合には(ステップS30:YES)、ステップS32に移行する。
ステップS31に移行したCPU304は、接続を要求したノードNnの上流ノードを接続先のノードとして選択し(ステップS31)、当該上流ノードのネットワークアドレス情報等を上流ノード接続指示メッセージから取得すると、当該情報に基づいて、当該上流ノードに接続要求メッセージを送信する(ステップS28)。
一方、ステップS32に移行したCPU304は、選択したノードNnからストリーミングでコンテンツデータを受信するための接続処理(ノードNnとのネゴシエーション)を実行する。接続処理が完了すると、CPU304は、自ノードのネットワークアドレス情報、自ノードの上流ノードとして接続したノードNnを示す情報等を含む接続完了通知メッセージを接続先紹介サーバ20に送信する(ステップS33)。次いで、CPU304は、接続先のノードNnへストリーム開始要求メッセージを送信し(ステップS34)、これに応じて接続先のノードNnから送信されてきたストリーム開始通知メッセージを受信する(ステップS35)。その後、接続先のノードNnからコンテンツデータが送信されてくるので、CPU304は、当該コンテンツデータの受信を開始するとともに、受信品質の監視を開始する(ステップS36)。
次いで、CPU304は、一定時間が経過したか否かを判定する(ステップS41)。このとき、CPU304は、一定時間が経過した場合には(ステップS41:YES)、ステップS42に移行し、一定時間が経過していない場合には(ステップS41:NO)、ステップS43に移行する。
ステップS42に移行したCPU304は、コンテンツデータの受信品質を示す情報として、例えば、受信パケット損失レートを含む視聴中報告メッセージを接続先紹介サーバに送信すると、ステップS41に移行する。
一方、ステップS43に移行したCPU304は、帯域測定要求メッセージを受信したか否かを判定する(ステップS43)。このとき、CPU304は、帯域測定要求メッセージを受信した場合には(ステップS43:YES)、ステップS44に移行し、帯域測定要求メッセージを受信していない場合には(ステップS43:NO)、ステップS49に移行する。
ステップS44に移行したCPU304は、帯域測定要求メッセージを送信してきた帯域測定要求元としてのノードNnに測定許可応答メッセージを送信する(ステップS44)。これに応じて当該ノードNnから帯域測定用データが送信されてくるので、CPU304は、当該データを受信する(ステップS45)。次いで、CPU304は、一定時間が経過したか否かを判定し(ステップS46)、一定時間が経過していない場合には(ステップS46:NO)、帯域測定用データの受信を継続し(ステップS45)、一定時間が経過した場合には(ステップ46:YES)、受信した帯域測定用データのビット数を、経過した時間で除することによって受信ビットレートを算出する(ステップS47)。次いで、CPU304は、算出した受信ビットレートを含む測定結果メッセージを要求元のノードNnに送信し(ステップS48)、ステップS41に移行する。
一方、ステップS49に移行したCPU304は、接続要求メッセージを受信したか否かを判定する(ステップS49)。このとき、CPU304は、接続要求メッセージを受信した場合には(ステップS49:YES)、ステップS50に移行し、接続要求メッセージを受信していない場合には(ステップS50:NO)、ステップS58に移行する。
ステップS50に移行したCPU304は、内部で保持している自ノード情報に含まれる上り帯域の測定結果に基づいて、自ノードはコンテンツデータの中継に適したノードであるか否かを判定する。例えば、上り帯域が所定値以上である場合には、コンテンツデータの中継に適したノードであると判定され、上り帯域が当該所定値未満である場合には、コンテンツデータの中継に適していないノードであると判定される。このとき、CPU304は、自ノードがコンテンツデータの中継に適したノードである場合には(ステップS50:YES)、ステップS51に移行し、自ノードがコンテンツデータの中継に適していないノードである場合には(ステップS50:NO)、ステップS56に移行する。
ステップS51に移行したCPU304は、接続要求メッセージを送信してきた接続要求元としてのノードNnに接続許可応答メッセージを送信し(ステップS51)、ストリーミングによりコンテンツデータを要求元のノードNnに送信するための接続処理を実行する(ステップS52)。接続処理が完了すると、要求元のノードNnからストリーム開始要求メッセージが送信されてくるので、CPU304は、当該メッセージを受信し(ステップS53)、これに応じて、ストリーム開始通知メッセージを要求元のノードNnに送信する(ステップS54)。次いで、CPU304は、自ノードの上流ノードから受信しているコンテンツデータの、要求元のノードに対する送信を開始すると(ステップS55)、ステップS41に移行する。
一方、ステップS56に移行したCPU304は、自ノードの上流ノードとの接続を切断し(ステップS56)、当該上流ノードのネットワークアドレス情報を含む上流ノード接続指示メッセージを要求元のノードNnに送信すると(ステップS57)、再接続を開始し(ステップS59)、上流ノード候補の問い合わせを行う(ステップS26)。
他方、ステップS58に移行したCPU304は、何らかの原因で上流ノードとの接続が切断されたか否かを判定する。このときCPU304は、上流ノードとの接続が切断された場合には(ステップS58:NO)、再接続を開始し(ステップS59)、上流ノードとの接続が切断されていない場合には(ステップS58:NO)、現在接続しているトポロジーからの離脱命令を利用者から受けたか否かを判定する(ステップS60)。このとき、CPU304は、離脱命令を受けた場合には(ステップS60:YES)、ステップS61に移行し、離脱命令を受けていない場合には(ステップS60:NO)、ステップS41に移行する。
ステップS61に移行したCPU304は、自ノードの上流ノード及び下流ノードの全てのノードNnとの接続を切断し(ステップS61)、接続先紹介サーバ20に離脱通知メッセージを送信すると(ステップS62)、ステップS23に移行する。
図12(A)は、ノードNnにおけるCPU304により実行される帯域測定処理の一例を示すフローチャートである。また、図12(B)は、帯域測定処理の他の例を示すフローチャートであり、同図において、図12(A)と同様の要素については同様の符号を付してある。また、図12(A)は、帯域測定を1回のみ行う場合の例であり、図12(B)は、帯域測定を複数回行う場合の例である。
図12(A)の例において、CPU304は、接続先紹介サーバ20から帯域測定サーバノードの候補を取得する(ステップS71)。具体的に、CPU304は、帯域測定サーバノード紹介要求メッセージを接続先紹介サーバ20に送信し、これに応じて接続先紹介サーバ20から送信されてきた帯域測定サーバノード候補紹介メッセージを受信する。
次いで、CPU304は、こうして取得した帯域測定サーバノード候補の中から帯域測定サーバノードとして接続する一つのノードNnを帯域測定サーバノードとして選択する(ステップS72)。次いで、CPU304は、選択した帯域測定サーバノードのネットワークアドレス情報等を帯域測定サーバノード候補紹介メッセージから取得すると、当該情報に基づいて、当該ノードNnに接続する(ステップS73)。次いで、CPU304は、帯域測定要求メッセージを帯域測定サーバノードに送信し(ステップS74)、これに応じて当該ノードから送信されてきた測定許可応答メッセージを受信すると(ステップS75)、帯域測定用データを帯域測定サーバノードに送信する(ステップS76)。
次いで、CPU304は、帯域測定サーバノードから測定結果メッセージを受信したか否かを判定し(ステップS77)、当該メッセージを受信していない場合には(ステップS77:NO)、帯域測定用データの送信を継続し(ステップS76)、当該メッセージを受信した場合には(ステップ77:YES)、当該測定結果メッセージに設定されている測定結果を含む自ノード情報を主記憶装置302に保存して(ステップS78)、帯域測定処理を終了させる。
一方、図12(B)の例において CPU304は、図12(A)と同様にステップS71〜S77を実行すると、測定結果メッセージに設定されている測定結果を一時的に主記憶装置302に保存する(ステップS79)、次いで、CPU304は、帯域測定が所定回数実行されたか否かを判定し(ステップS80)、未だ所定回数実行されていない場合には(ステップS80:NO)、ステップS72に移行する。
そして、CPU304は、帯域測定の回数が所定回数に達すると(ステップS80:YES)、複数回実行された帯域測定の結果を統合する(ステップS81)、具体的に、CPU304は、各測定結果としてのビットレートの平均値を算出して、統合した測定結果とする。次いで、CPU304は、統合した測定結果を含む自ノード情報を主記憶装置302に保存して(ステップS82)、帯域測定処理を終了させる。
なお、上記説明した帯域測定処理では、一度に一つの帯域測定サーバノードが選択されるようにしていたが、一度に複数の帯域測定サーバノードが選択されるようにしても良い。この場合において、CPU304は、例えば、選択した複数の帯域測定サーバノードに対して一斉に帯域測定用データを送信し、当該複数の帯域測定サーバノードから送信されてきた測定結果メッセージに含まれるビットレートを合算して、測定結果を統合すれば良い。
以上説明したように、本実施形態によれば、接続先紹介サーバ20のCPU204が、ツリー型放送システムSに参加してコンテンツデータを受信する各ノードNnから当該コンテンツデータの受信品質を取得し、ハードディスク装置203に記憶される視聴ノードテーブルに、取得先のノードNnと対応付けて受信品質を設定し、新たにトポロジーへ参加するノードNnから帯域測定サーバ紹介要求メッセージを受信し、視聴ノードテーブルに設定された受信品質が良いノードNnの中から少なくとも一つを帯域測定サーバノード候補として選定し、選定した帯域測定サーバノード候補のネットワークアドレス情報を含む帯域測定サーバノード候補紹介メッセージを、要求元のノードNnに送信する。これにより、帯域測定サーバノード候補紹介メッセージを受信したノードNnは、当該帯域測定サーバノード候補紹介メッセージが示す帯域測定サーバノードのうち少なくとも一つを帯域測定サーバノードとして測定用データを送信し、帯域測定サーバノードが当該測定用データを受信する際の転送効率に基づいて、新たにトポロジーへ参加するノードNnの上り帯域が測定される。
従って、帯域測定用のサーバ装置の代わりとなる帯域測定サーバノードが、ツリー型放送システムSに参加している複数のノードNnの中から選定されるので、ツリー型放送システムSに参加するノードNnの上り帯域の測定に伴う負荷を分散させるができ、また、受信品質が上り帯域の測定に適しているノードNnが選定されるので、測定精度を高めることができる。
また、接続先紹介サーバ20のCPU204が、ハードディスク装置203に記憶される帯域測定サーバノードテーブル上において、選定した帯域測定サーバノード候補の紹介日時に現在日時を設定し、帯域測定サーバノード候補を選定する際、過去に選定していないノードNnを優先して選定し、過去に選定したノードNnから選定する場合には、帯域測定サーバノードテーブルに設定された紹介日時が最古のノードNnを優先して選定するので、受信品質が上り帯域の測定に適している各ノードNnが、帯域測定サーバノードとしてまんべんなく紹介されるので、測定に伴う各ノードNnの負荷を効果的に分散させることができる。
また、ツリー型放送システムSは、上り帯域がコンテンツデータの中継に適しているノードNnが優先して当該コンテンツデータを中継するノードNnとなるよう、複数のノードNnが接続されるものであって、接続先紹介サーバ20のCPU204が、トポロジー上において、受信品質が測定に適しているノードNnの中からより上位階層のノードNnを優先して帯域測定サーバノード候補として選定するように構成することで、上り帯域の測定を安定して行うことができ、測定精度をより高めることができる。