以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施形態は、P2Pを用いたツリー構造によるコンテンツデータ配信システムであって、コンテンツデータの配信元である放送局から配信されるコンテンツデータを、ツリー状の階層構造を構成するクライアント側の端末装置がP2Pを用いて受信するコンテンツデータ配信システムに対して、本発明を適用した場合の実施形態である。
[1.コンテンツ配信システムの構成等]
図1は、本実施形態に係るコンテンツデータ配信システムSの概要構成例を示す図である。図1に示すように、本発明に係るコンテンツデータ配信システムSは、コンテンツデータを配信する配信装置として機能する放送局1と、この放送局1から配信されるコンテンツデータを受信して再生すると共に、受信したコンテンツデータを中継する複数のクライアント側の端末装置A1〜A7、B1〜B7と、放送局1を頂点として、複数の端末装置A1〜A7、B1〜B7が階層構造で多層に論理接続されるように管理する接続管理装置として機能する管理サーバ2とを備えている。
そして、放送局1から配信されるコンテンツデータは、各端末装置A1〜A7、B1〜B7の中継機能により、階層構造の最も上層に接続されている端末装置A1、B1側から、階層構造の最も下層に接続されている端末装置A4〜A7、B4〜B7側へ順次中継されて、階層構造を構成する全ての端末装置A1〜A7、B1〜B7に配信され、これら複数の端末装置A1〜A7、B1〜B7によってコンテンツデータを再生可能としている。なお、図1中の符号N1は、これから新たに階層構造に接続(参加)する端末装置(以下、「新規端末装置」という。)である。
また、放送局1、端末装置A1〜A7、B1〜B7、管理サーバ2には、各々IPアドレスが割り当てられており、これら装置は、ネットワークの一例としてのインターネットにルータ等を介して接続可能となっている。なお、管理サーバ2を放送局1の内部に有することとしてもよく、この場合には管理サーバ2にはIPアドレスは割り当てなくてもよい。
なお、以下の説明では、いずれかの端末装置A1〜A7、B1〜B7、又はすべての端末装置A1〜A7、B1〜B7を示す場合に、便宜上、端末装置Aという場合がある。また、端末装置Aの下層側に接続されて、この端末装置Aがコンテンツデータを直接配信する端末装置Aを子端末Aという場合がある。
また、本実施形態では、1つの放送局1につき1つの管理サーバ2を設けているが、管理サーバ2の処理能力に余裕がある場合は複数の放送局1の管理を1つの管理サーバ2で行ってもよい。
また、このコンテンツデータ配信システムSは、複数の端末装置Aが自由に階層構造に接続することができ、又、階層構造に接続した端末装置Aが自由に階層構造から脱退することができるように構成している。
また、管理サーバ2は、階層構造を構成している端末装置Aの接続状態情報を記憶する接続状態情報記憶手段と、新規端末装置N1からの接続先紹介要求を受信すると、接続状態情報記憶手段に記憶している接続状態情報に基づいて、その新規端末装置N1が接続するための接続先候補を選択する接続先候補選択手段と、この接続先候補選択手段により選択した接続先候補を、接続先紹介要求を送信した新規端末装置N1へ通知する通知手段とを備えている。
そして、新規端末装置N1が新たに階層構造に参加する際、この管理サーバ2は、接続先候補選択手段により選択した接続先候補を、通知手段により新規端末装置N1へ通知することで、新規端末装置N1へ接続先となる端末装置Aを紹介するようにしている。
また、接続先となる端末装置Aを紹介する場合は、1つの端末装置Aを紹介してもよいし、階層構造における末端の複数の端末装置Aを接続先候補として紹介してもよい。
このとき、管理サーバ2の接続先候補選択手段は、接続状態情報記憶手段に記憶させている接続先状態情報に基づいて、新規端末装置N1の接続先候補として、階層構造の末端に接続している端末装置Aを選択する。
そして、このように選択した接続先候補のIPアドレス、ポート番号及び通信プロトコル等を新規端末装置N1へ通知する。なお、コンテンツ配信システムSにおいて、すでに通信プロトコルやポート番号が固定されているときには、端末装置Aへのポート番号及び通信プロトコルは通知しなくてもよい。また、通信プロトコルとして、MMS(MicrosoftMediaServer)プロトコル、RTSP(Real Time Streaming Protocol)等が用いられる。また、コンテンツデータの形式として、MPEG−TS(Motion Picture Expert Group Transport Stream)、ASF(Advanced Streaming Format)などが用いられる。
また、端末装置Aは、管理サーバ2へ接続先紹介要求を送信する接続先紹介要求送信手段と、管理サーバ2から送信される接続先候補に関する情報を受信する接続先候補受信手段と、管理サーバ2から受信した接続先候補に対応する端末装置に接続する接続手段とを備えている。
そして、新規端末装置N1は、接続先紹介要求送信手段により管理サーバ2へ接続先紹介要求を送信した後、接続先候補受信手段により、管理サーバ2から接続先候補のIPアドレスを受信すると、接続手段により、そのIPアドレスに対応した端末装置Aに接続するようにしている。
このようにして新規端末装置N1は、階層構造に既に参加している端末装置A(以下、「既存端末装置A」ともいう。)に接続することにより、コンテンツデータ配信システムSに組み込まれることとなる。
また、各端末装置Aは、接続した端末装置Aから転送されるコンテンツデータを受信するコンテンツデータ受信手段と、このコンテンツデータ受信手段により受信したコンテンツデータを再生する再生手段とを備えている。
さらに、各端末装置Aは、他の端末装置Aからコンテンツデータの中継依頼を受信する中継依頼受信手段と、他の端末装置Aへコンテンツデータを転送する転送手段とを備えている。
そして、このコンテンツデータ配信システムSでは、ツリー状の階層構造において、放送局1から配信されるコンテンツデータは、各端末装置Aの中継機能により順次下層の端末装置Aへ中継されて階層構造を構成する全ての端末装置Aに配信されるようにしている。
すなわち、図1に示すように、まず、放送局1から端末装置A1、B1(第1層の端末装置)へコンテンツデータが送信され、端末装置A1はコンテンツデータを受信すると、下層の端末装置A2、A3(第2層の端末装置)へ受信したコンテンツデータを中継し、端末装置B1はコンテンツデータを受信すると、下層の端末装置B2、B3(第2層の端末装置)へコンテンツデータを中継する。
そして、端末装置A2はコンテンツデータを受信すると、下層の端末装置A4、A5(第3層の端末装置)へ受信したコンテンツデータを中継し、端末装置A3はコンテンツデータを受信すると、下層の端末装置A6、A7(第3層の端末装置)へ受信したコンテンツデータを中継し、端末装置B2はコンテンツデータを受信すると、下層の端末装置B4、B5(第3層の端末装置)へ受信したコンテンツデータを中継し、端末装置B3はコンテンツデータを受信すると、下層の端末装置B6、B7(第3層の端末装置)へ受信したコンテンツデータを中継する。
このようにして端末装置Aへ配信されたコンテンツデータは、コンテンツデータ配信システムSに参加しているすべての端末装置Aへ配信され、各端末装置Aにより再生される。
また、このコンテンツデータ配信システムSは、接続先候補に対応する端末装置Aに接続した新規端末装置N1を、所定のタイミングにおいて新規端末装置N1の後述する配信能力に応じて、現在の階層と異なる階層に再接続させる再接続装置を備えている。
この再接続装置は、新規端末装置N1が階層構造に接続してから所定時間が経過したとき、又は、新規端末装置N1が所定量のコンテンツデータを受信したときに、新規端末装置N1の配信能力に応じて、新規端末装置N1を現在の階層と異なる階層に再接続させるようにしている。
ここでいう配信能力とは、端末装置Aが接続されている回線、端末装置Aの処理能力、端末装置Aが階層構造に参加している時間、の少なくともいずれか1つに基づく値である。
具体的には、配信能力の一例を記載した図2に示すように、各端末装置Aは自身の配信能力に応じた持ち点を備えている。すなわち、端末装置Aが接続されている回線が光回線の場合には、持ち点が60点となり、ADSL回線の場合には、持ち点が20点、CATV回線の場合には、持ち点が30点となる。
また、端末装置Aの処理能力に関して、端末装置Aのバージョンが新しい場合には、持ち点が20点となり、古いバージョンの場合には、持ち点が10点となる。
また、階層構造に参加している時間に関して、参加している時間が1時間以上の場合には、持ち点が20点となり、10分以上の場合には、持ち点が5点、10分未満の場合には、持ち点が0点となる。
そして、各端末装置Aの持ち点を加算した点数を配信能力としており、この配信能力に応じて、各端末装置Aがコンテンツデータを配信可能な端末装置Aの数(接続可能な子端末Aの数)を判定するようにしている。
ここで、図1に示す各端末装置A内に記載した数字(図1では、既存端末装置Aは全て「2」、新規端末装置は「3」としている。)は、各端末装置Aに接続可能な子端末Aの数を示している。なお、ここに記載した配信能力の構成要件(回線の種類、機種のバージョン、参加している時間)は一例に過ぎず、他の構成要件を追加して配信能力を算出することもできる。
また、再接続装置は、端末装置Aの配信能力を取得する配信能力取得手段と、新規端末装置N1の配信能力と既存端末装置Aの配信能力とを比較可能な比較手段と、比較手段による比較の結果、新規端末装置N1の配信能力が既存端末装置Aの配信能力よりも高い場合に、配信能力の低い既存端末装置Aよりも階層構造上における上層に新規端末装置N1を再接続させる再接続手段を備えている。
そして、この再接続装置は、各端末装置Aの内部に設けることができる。このように再接続装置を端末装置Aに設けた場合、配信能力取得手段は、新規端末装置N1へコンテンツデータを直接配信している既存端末装置Aの配信能力と、自身(新規端末装置N1)の配信能力とを取得し、比較手段は、これら既存端末装置Aの配信能力と自身の配信能力とを所定のタイミングで比較する。この比較は、新規端末装置N1が階層構造に再接続する度に行うようにしている。
なお、このとき、直接接続している上位端末装置Aが一般の端末装置Aであれば配信能力の比較を行うが、直接接続している端末装置Aが放送局1である場合がある。
この場合、端末装置Aが放送局1と接続していると分かっている時(端末Aが階層情報を持っている)は、配信能力の比較は行わない。端末装置Aが放送局1と接続しているか、端末装置Aと接続しているか分からない場合は配信能力の比較を行い、配信能力の比較を受けた放送局1は自分が放送局1であることを通知するようにしている。
そして、再接続手段は、比較手段の比較の結果、新規端末装置N1の配信能力が既存端末装置Aの配信能力よりも高い場合に、新規端末装置N1を既存端末装置Aと入れ替えて階層構造に再接続させるようにしている。
このとき、新規端末装置N1と入れ替わる既存端末装置Aは、新規端末装置N1と入れ替わる前にコンテンツデータを配信していた既存端末装置との接続状態を維持したまま、新規端末装置N1と入れ替わって階層構造に再接続するようにしている。
また、この再接続装置は、管理サーバ2の内部に設けることもできる。このように再接続装置を管理サーバ2に設けた場合、配信能力取得手段は、階層構造に接続している全ての端末装置Aの配信能力を取得し、比較手段は、新規端末装置N1が階層構造に接続した後、所定のタイミングで新規端末装置N1の配信能力と、全ての既存端末装置Aの配信能力とを比較するようにしている。
また、このとき配信能力取得手段は、新規端末装置N1の階層より上の階層に接続している端末装置Aの配信能力を取得して比較してもよい。
そして、再接続手段は、比較手段による比較の結果、新規端末装置N1よりも配信能力の低い既存端末装置Aが存在した場合に、新規端末装置N1に対して、その既存端末装置Aが接続されている階層よりも高い階層における再接続先候補を選択する再接続先候補選択手段を備えている。
特に、この再接続先候補選択手段は、新規端末装置N1を再接続させる階層として、新規端末装置N1よりも配信能力の低い既存端末装置Aのうち階層構造上の最も上層に接続している既存端末装置Aと、新規端末装置N1よりも配信能力の高い既存端末装置Aのうち階層構造上の最も下層に接続している既存端末装置Aとの間の階層、又は、新規端末装置N1よりも配信能力の低い既存端末装置Aのうち階層構造上の最も上層に接続している既存端末装置Aと、放送局1との間の階層となる再接続先候補を選択するようにしている。
通知手段は、この再接続先候補選択手段によって選択された再接続先候補を新規端末装置N1へ通知するようにしている。
そして、この再接続先候補を受信した新規端末装置N1は、接続手段により、この再接続先候補に対応する端末装置Aに再接続するようにしている。
また、管理サーバ2に設ける再接続装置は、再接続先候補選択手段が選択した再接続先候補に接続されている子端末Aの再接続先を選択する第2再接続先候補選択手段を備えており、この第2再接続先候補選択手段は、新規端末装置を再接続先候補として選択するようにしている。
また、この再接続装置は、新規端末装置N1が再接続を行った後、この新規端末装置N1が更に他の端末装置Aにコンテンツデータの配信が可能な状態であるか否かを判断する判断手段を備えている。
さらに、この再接続装置は、判断手段による判断の結果、新規端末装置N1が更に他の端末装置Aにコンテンツデータの配信が可能な状態である場合、新規端末装置N1がコンテンツデータを直接配信している既存端末装置Aよりも階層構造上で下層に接続している既存端末装置Aに対して、新規端末装置N1を再接続先候補として選択する第3再接続先候補選択手段とを備えており、通知手段は、この第3再接続先候補選択手段によって選択された再接続先候補を、既存端末装置へ通知するようにしている。
このように、新規端末装置N1を再接続させることにより、配信能力の比較的高い端末装置Aを上層側に、配信能力の比較的低い端末装置Aを下層側に、それぞれ再接続して階層構造を再構築することができ、これにより、階層構造における階層の深さを可及的に浅くなるように再構築することができると共に、階層構造に接続した全ての端末装置Aへコンテンツデータを安定して配信することができる。
以下、本実施形態に係るコンテンツデータ配信システムSにおいて、上記した再接続装置を管理サーバ2側に設けた場合の実施形態を第1実施形態とし、再接続装置を端末装置A側に設けた場合の実施形態を第2実施形態として説明を行う。
[2.第1実施形態]
ここで、第1実施形態に係るコンテンツデータ配信システムSを構成する放送局1、管理サーバ2、端末装置A(図1及び図3及び図〜図13に示す端末装置A、A1〜8、B1〜13、N1)について、それらの具体的な構成及び動作について図面を参照して説明する。
[2.1.放送局1の構成等の説明]
図3は、本実施形態における放送局1の概略構成を示す機能ブロック図である。放送局1は、一般のサーバコンピュータを適用可能であり、図3に示すように、CPU(Central Processing Unit)101と、各種プログラム等を記憶(格納)する書き換え可能な主記憶装置としての第1の記憶部102と、各種データ等を記憶するハードディスク装置等から構成された第2の記憶部103と、インターネットを介してクライアント側の端末装置Aや管理サーバ2との間で通信を行うネットワークインターフェイス104と、所定の情報を入力可能なキーボード105やマウス106等の入力部を制御する周辺機器制御チップ107と、CPU101からイメージデータを受け取り、内部のビデオメモリ(図示せず)に書き込むと共にこのビデオメモリに書き込んだデータを後述のディスプレイ109に表示するビデオチップ108と、ビデオチップ108から送信される信号に応じた表示を行うディスプレイ109と、FM音源(Frequency Modulation)やWave Table音源などの音源を有する音源チップ110と、音源チップ110から出力されるオーディオ信号を音波に変換するスピーカ111とを備えて構成され、これらの各種構成要素はシステムバス112を介して相互に接続されている。なお、本実施形態においては、CPU101と第1の記憶部102とで主制御部113を構成している。なお、ネットワークインターフェイス104は、ルータ10aを介して、ネットワークに接続されている。
(第1の記憶部102について)
また、第1の記憶部102には、放送局1のコンピュータとしての基本的な機能を提供するためのOS(オペレーティングシステム)のプログラム120と、第2の記憶部103に記憶されたコンテンツデータを取り出して端末装置Aへストリーミング配信するためのストリーム制御プログラム121と、配信チャネル毎に第1層の端末装置AのIPアドレスの管理等を行なうためのトポロジー制御プログラム122と、ディスプレイ109を制御するための画面制御プログラム123と、エンコードされたコンテンツデータをデコードしたり、コンテンツデータをエンコードするためのエンコーダ/デコーダプログラム124等を記憶しており、これらはCPU101によって読み出され、CPU101によってこれらのプログラムに従った機能が実行される。
ここで、OSプログラム120は、CPU101によって読み出されて実行されることにより、キーボード105やマウス106の入出力に関する機能や、第1の記憶部102や第2の記憶部103などのメモリ管理などの放送局1であるコンピュータの基本的な機能を実行可能にするものである。そして、このOSプログラム120がCPU101によって実行された状態で、上述のストリーム制御プログラム121、トポロジー制御プログラム122、画面制御プログラム123、エンコーダ/デコーダプログラム124等が実行される。
なお、OSプログラム120、ストリーム制御プログラム121、トポロジー制御プログラム122、画面制御プログラム123、エンコーダ/デコーダプログラムプログラム124等は、例えば、インターネットに接続されたサーバ等から第1の記憶部102にダウンロードされるようにしてもよく、又CD−ROM等の記憶媒体に記録されてから当該記憶媒体のドライブを介して、第1の記憶部102に読み込まれるようにしてもよい。
(主制御部113について)
主制御部113は、上述のようにCPU101と第1の記憶部102とから構成され、CPU101が第1の記憶部102に記憶された各種プログラム120〜124を読み出して実行することにより、放送局1全体を統括制御するものである。
[2.2.端末装置Aの構成等の説明]
次に、図4を参照して、クライアント側の端末装置Aの構成及び動作について説明する。
図4は、本実施形態における端末装置Aの概略構成例を示す機能ブロック図である。端末装置Aは、一般のパーソナルコンピュータを適用可能であり、図4に示すように、CPU(Central Processing Unit)201と、各種プログラム等を記憶(格納)する書き換え可能な主記憶装置としての第1の記憶部202と、各種データ等を記憶するハードディスク装置等から構成された第2の記憶部203と、インターネットを介して放送局1や管理サーバ装置2との間で通信を行うネットワークインターフェイス204と、クライアントが端末装置Aを遠隔操作するために所定の赤外線信号を送信及び受信するリモコン205と、このリモコン205と赤外線により通信を行なうための赤外線ポート206と、赤外線ポート206を制御する周辺機器制御チップ207と、CPU201からイメージデータを受け取り、内部のビデオメモリ(図示せず)に書き込むと共にこのビデオメモリに書き込んだデータを後述のディスプレイ209に表示するビデオチップ208と、ビデオチップ208から送信される信号に応じた表示を行うディスプレイ209と、FM音源(Frequency Modulation)やWave Table音源などの音源を有する音源チップ210と、音源チップ210から出力されるオーディオ信号を音波に変換するスピーカ211とを備えて構成され、これらの各種構成要素はシステムバス212を介して相互に接続されている。なお、本実施形態においては、CPU201と第1の記憶部202とで制御部213を構成している。なお、ネットワークインターフェイス204は、ルータ10bを介して、ネットワークに接続されている。
(第1の記憶部202について)
また、第1の記憶部202には、端末装置Aのコンピュータとしての基本的な機能を提供するためのOSのプログラム220と、放送局1から直接又は他の端末装置Aに中継されてストリーミング配信されるコンテンツデータを受信するためのストリーム制御プログラム221と、ツリー状に接続された1段上層の端末(放送局1又は端末装置A)のIPアドレスとツリー状に接続された1段下層の端末装置AのIPアドレスの管理等を行なうためのトポロジー制御プログラム222と、ディスプレイ209を制御するための画面制御プログラム223と、エンコードされたコンテンツデータをデコードするためのデコーダプログラム224等を記憶しており、これらはCPU201によって読み出され、CPU201によってこれらのプログラムに従った機能が実行される。
ここで、OSプログラム220は、CPU201によって読み出されて実行されることにより、リモコン205の入出力に関する機能や、第1の記憶部202や第2の記憶部203などのメモリ管理などの端末装置Aであるコンピュータの基本的な機能を実行可能にするものである。そして、このOSプログラム220がCPU201によって実行された状態で、上述のストリーム制御プログラム221、トポロジー制御プログラム222、画面制御プログラム223、デコーダプログラム224等が実行される。
なお、OSプログラム220、ストリーム制御プログラム221、トポロジー制御プログラム222、画面制御プログラム223、デコーダプログラム224等は、例えば、インターネットに接続されたサーバ等から第1の記憶部202にダウンロードされるようにしてもよく、又CD−ROM等の記憶媒体に記録されてから当該記憶媒体のドライブを介して、第1の記憶部202に読み込まれるようにしてもよい。
(制御部213について)
制御部213は、上述のようにCPU201と第1の記憶部202とから構成され、CPU201が第1記憶部202に記憶された各種プログラム220〜224を読み出して実行することにより、端末装置A全体を統括制御し、かつ、後述する接続先紹介要求送信手段、接続先候補受信手段、接続手段、再生手段、中継依頼受信手段、転送手段等として機能させるようになっている。
(接続先紹介要求送信手段について)
接続先紹介要求送信手段は、端末装置Aが階層構造に新規に接続する際に、管理サーバ2に対して新規参加を依頼するための接続先紹介要求を示すデータ(以下、「参加依頼パケット」という。)を送信するものである。このとき接続先紹介手段は、参加依頼パケットと共に、自身の配信能力を管理サーバ2へ送信するものである。
(接続先候補受信手段について)
接続先候補受信手段は、管理サーバ2から送信される階層構造における接続先候補を示すデータ(以下、「親端末の紹介パケット」という。)を受信するものであり、この親端末の紹介パケットには、端末装置Aが階層構造に参加した後、この端末装置Aに対して直接コンテンツデータを配信する既存端末装置A(以下、「親端末A」ともいう。)のIPアドレスを示すデータが含まれている。
なお、参加依頼パケットを送信した端末装置Aが新規端末装置N1であった場合には、階層構造における末端に接続している既存端末装置AのIPアドレスが接続先候補として送信される。
(接続手段について)
接続手段は、制御部213が接続先候補受信手段として機能して受信した接続先候補のIPアドレスに対応した親端末Aに接続することにより、この端末装置Aを階層構造に組み込むものである。
こうして制御部213が接続手段として機能して親端末Aと接続した後、この端末装置Aの制御部213は、第1の記憶部202に記憶しているストリーム制御プログラム221に基づいて、親端末装置Aから配信されるコンテンツデータを第1の記憶部202のバッファ領域に順次記憶すると共に、記憶したコンテンツデータを後述する再生手段により順次再生するストリーム制御を行う。ここで、バッファ領域とは、ストリーム制御プログラム221によって、第1の記憶部202に確保された領域である。
(再生手段について)
再生手段は、第1の記憶部202のバッファ領域に順次記憶したコンテンツデータを順次再生するものであり、このとき制御部213は、ストリーム制御プログラム221に基づいてビデオチップ208及び音源チップ210を動作させることによりコンテンツデータを再生する。
(中継依頼受信手段について)
中継依頼受信手段は、他の端末装置Aからコンテンツデータの中継依頼を示すデータ(以下、「データ配信依頼パケット」という。)を受信するものである。
(転送手段について)
転送手段は、子端末Aが接続されており、現在コンテンツデータの中継が可能な状態である場合に、第1の記憶部202のバッファ領域に順次記憶してきたコンテンツデータを子端末Aに中継して配信するものである。
[2.3.管理サーバ2の構成等の説明]
次に、図5を参照して、管理サーバ2の構成及び動作について説明する。
図5は、本実施形態における管理サーバ2の概略構成例を示す機能ブロック図である。管理サーバ2は、一般のサーバコンピュータを適用可能であり、図5に示すように、CPU(Central Processing Unit)301と、各種プログラム等を記憶(格納)する書き換え可能な主記憶装置としての第1記憶部302と、各種データ等を記憶するHDD(Hard Disc Drive)等から構成された第2記憶部303と、インターネットを介して放送局1や端末装置Aとの間で通信を行うネットワークインターフェイス304と、所定の情報を入力可能なキーボード305やマウス306等の入力部を制御する周辺機器制御チップ307と、CPU301からイメージデータを受け取り、内部のビデオメモリ(図示せず)に書き込むと共にこのビデオメモリに書き込んだデータを後述のディスプレイ309に表示するビデオチップ308とを備えて構成され、これらの各種構成要素はシステムバス310を介して相互に接続されている。なお、本実施形態においては、CPU301と第1記憶部302とで制御部312を構成している。なお、ネットワークインターフェイス304は、ルータ10cを介して、インターネットに接続されている。
(第1記憶部302について)
また、第1記憶部302には、管理サーバ2のコンピュータとしての基本的な機能を提供するためのOSのプログラム320と、各端末装置Aの配信能力を評価するための配信能力評価プログラム321と、階層構造を構築及び管理等するためのトポロジー制御プログラム322と、端末装置Aから送信される接続先紹介要求に対応する接続先候補を判定し、端末装置Aへ接続先候補のデータ(親端末Aの紹介パケット)を送信等するための接続先紹介プログラム324等を記憶しており、これらはCPU301によって読み出され、CPU301によってこれらのプログラムに従った機能が実行される。
ここで、OSプログラム320は、CPU301によって読み出されて実行されることにより、キーボード305やマウス306の入出力に関する機能や、第1記憶部302や第2記憶部303などのメモリ管理などの管理サーバ2であるコンピュータの基本的な機能を実行可能にするものである。そして、このOSプログラム320がCPU301によって実行された状態で、配信能力評価プログラム321、トポロジー制御プログラム322、接続先紹介プログラム324等が実行される。
なお、OSプログラム320、配信能力評価プログラム321、トポロジー制御プログラム322、接続先紹介プログラム324等は、例えば、インターネットに接続されたサーバ等から第1記憶部302にダウンロードされるようにしてもよく、又CD−ROM等の記憶媒体に記録されてから当該記憶媒体のドライブを介して、第1記憶部302に読み込まれるようにしてもよい。
(第2記憶部303について)
第2記憶部303であるハードディスク装置には、階層構造を構成する複数の端末装置の各配信能力に関する情報を記憶する配信能力データベース314と、各端末装置の階層構造における接続状態を示す情報を記憶するトポロジーデータベース313とを備えており、接続状態情報記憶手段として機能するものである。
(制御部312について)
制御部312は、上述のようにCPU301と第1記憶部302と第2記憶部303から構成され、CPU301が第2記憶部303から各端末装置Aの配信能力に関する情報及び、その端末装置Aの階層構造における接続状態を示す情報を読み出すと共に、第1記憶部302に記憶された各種プログラム320、321、322、324を読み出して実行することにより、管理サーバ2全体を統括制御し、かつ、後述する接続先候補選択手段、通知手段、配信能力取得手段、比較手段、再接続候補選択手段、再接続手段、第2再接続候補選択手段、判断手段、第3再接続先候補選択手段等として機能するものである。
(接続状態情報記憶手段について)
接続状態情報記憶手段は、階層構造に接続している複数の端末装置A毎に、各端末装置Aが接続している階層構造におけるIPアドレスを記憶すると共に、階層構造における現在、端末装置Aが接続可能なIPアドレスを記憶するものであり、これらの接続状態情報は、階層構造に新規端末装置N1が参加したとき、及び、既存端末装置Aが階層構造から脱退したときに、逐次更新して記憶するようにしている。
(接続先候補選択手段について)
接続先候補選択手段は、新規端末装置N1から接続先要求である参加依頼パケットを受信したときに、接続状態情報記憶手段を参照して、階層構造上で現在、端末装置Aを接続可能な状態となっているIPアドレスのうち、階層構造の末端に接続されている既存端末装置Aを選択し、この末端の既存端末装置Aに対応するIPアドレスを新規端末装置N1の接続先候補として選択するようにしている。
(通知手段について)
通知手段は、制御部312が接続先選択手段として機能して、選択したIPアドレスを親端末Aの紹介パケットとして、参加依頼パケットを送信してきた端末装置Aに送信するものである。
また、この通知手段は、後述する再接続先候補選択手段により選択した再接続先候補に対応するIPアドレスを、参加依頼パケットを送信してきた端末装置Aに対して通知する機能も有している。
(配信能力取得手段について)
配信能力取得手段は、階層構造に端末装置Aが接続する度に、その端末装置Aから送信される参加依頼パケットから、その端末装置Aの配信能力を取得して配信能力記憶手段に記憶させるものである。
また、この配信能力取得手段は、既に階層構造に接続している端末装置Aに関して、階層構造に接続している時間が所定時間(たとえば、10分、1時間など)を越えたときに、その既存端末装置Aの配信能力を逐次更新して配信能力記手段に記憶させるようにしている。
(比較手段について)
比較手段は、新規端末装置N1が階層構造に接続してから所定のタイミングで新規端末装置N1の配信能力と、配信能力記憶手段に記憶している全ての既存端末装置Aの配信能力とを比較するものである。
所定のタイミングとしては、新規端末装置N1が階層構構造に接続してから一定時間(たとえば、1分間。)が経過したときとするようにしている。なお、この所定タイミングとして、新規端末装置N1が階層構造に接続したときとすることもできる。
(再接続候補選択手段について)
再接続候補選択手段は、比較手段による比較の結果、新規端末装置N1の配信能力が親端末Aの配信能力よりも高い場合に、この親端末Aよりも高い階層の接続先を新規端末装置N1の再接続先候補として選択するものである。
具体的には、新規端末装置N1の再接続先候補となる階層として、新規端末装置N1よりも配信能力の低い既存端末装置Aのうち階層構造上で最も上層に接続されている既存端末装置Aと、新規端末装置N1よりも配信能力の高い既存端末装置Aのうち階層構造上で最も下層に接続している既存端端末装置Aとの間、又は、新規端末装置N1よりも配信能力の低い既存端末装置Aのうち階層構造上の最も上層に接続している既存端末装置Aと、放送局1との間の階層となる再接続先を選択するようにしている。
(再接続手段について)
再接続手段は、制御部312が再接続先候補選択手段として機能して選択した再接続先に新規端末装置N1を再接続させるものである。
(第2再接続候補選択手段について)
第2再接続候補選択手段は、制御部312が再接続先候補選択手段として機能して選択した端末装置Aに接続されている既存端末装置Aの再接続先候補を選択するものであり、この再接続先候補として、新規端末装置N1を選択するものである。
すなわち、この第2再接続先候補選択手段は、新規端末装置Aの接続先候補である端末装置Aの子端末Aに対し、新規端末装置N1を新たな親端末Aとして紹介するものである。
(判断手段について)
判断手段は、新規端末装置N1が階層構造への再接続を行った後、この新規端末装置N1が更に他の端末装置Aにコンテンツデータを配信可能な状態であるか否かの判断を行う。
このとき管理サーバ2の制御部312は、新規端末装置N1が再接続を行った際に配信能力記憶手段に記憶させた自身の配信能力を参照し、この新規端末装置N1が子端末Aを接続可能な状態であるか否かの判断を行う。
また、この判断手段は、再接続させた新規端末装置N1が現在加速送信中であるか否かによっても、他の端末装置Aにコンテンツデータを配信可能な状態であるか否かの判断を行う。
このとき管理サーバ2の制御部312は、再接続を行った新規端末装置N1から加速送信が終了したことを示すデータ(以下、「加速送信の終了パケット」という。)を受信すると、その新規端末装置N1が他の端末装置Aにコンテンツデータを配信可能な状態になったと判断する。
(第3再接続先候補選択手段について)
第3再接続先候補選択手段は、前記判断手段による判断の結果、再接続した新規端末装置N1が子端末Aを接続可能な状態であった場合に、この新規端末装置N1がコンテンツデータを直接配信している子端末Aよりも階層構造上で下層に接続している既存端末装置Aに対して、新規端末装置N1を再接続先候補として選択するものである。
また、この管理サーバ2では、配信能力取得手段と、比較手段と、再接続先候補選択手段と、通知手段と、第2再接続先候補選択手段と、第3再接続先候補選択手段と、再接続手段とを主たる構成要件とした再接続装置を備えており、この再接続装置により、接続先候補に接続した新規端末装置N1を、所定のタイミングにおいて新規端末装置N1の配信能力に応じて、現在の階層と異なる階層に再接続させることを可能としている。
[2.4 管理サーバ2側の判断により階層構造を再構築する方法について]
ここで、上記構成による放送局1と、端末装置Aと、管理サーバ2とによって本実施形態に係るコンテンツデータ配信システムSを構成し、このコンテンツデータ配信システムSにより階層構造の再構築の行う方法について説明する。
ここでは、管理サーバ2側の判断により階層構造を再構築する方法について説明する。なお、以下の説明において、親端末Aを頂点とした階層構造をツリーと呼ぶことがあり、図面における親端末Aと子端末Aとを接続可能とした矢印を枝と呼ぶことがある。
[2.4.1.方法1:新規端末装置N1を再接続する際に、新規端末装置N1の枝を残しておく方法]
図6は、図1に示す階層構造において、既存端末装置A7に新規端末装置N1が接続された状態を示す説明図である。
管理サーバ2の制御部312は、接続先候補選択手段として機能して、階層構造の末端に接続している既存端末装置A7を接続先候補として選択して新規端末装置N1へ指示する。この指示に基づいて新規端末装置N1は、新規端末装置N1の制御部213が接続手段として機能して既存端末装置A7に接続して、親端末Aである既存端末装置A7からコンテンツデータの配信を受け、制御部213が再生手段として機能して、配信されたコンテンツデータを再生する。
次に管理サーバ2の制御部312は、新規端末装置N1が既存端末装置A7に接続してから所定時間が経過すると、比較手段として機能して、新規端末装置N1の配信能力と、階層構造を構成している全ての既存端末装置A1〜A7、B1〜B7の配信能力とを比較する。
ここでは、図6に示すように、新規端末装置N1以外で階層構造を構成している全ての既存端末装置A1〜A7、B1〜B7の配信能力が(2)であり、新規端末装置N1の配信能力よりも低いため、管理サーバ2の制御部312は、再接続先候補選択手段として機能して、新規端末装置N1に対し、再接続先候補として放送局1を選択して指示すると共に、既存端末装置A1に対し、再接続先候補として新規端末装置N1を選択して指示する。
これらの指示により、図7に示すように、新規端末装置N1は放送局1に接続し、既存端末装置A1は新規端末装置N1に接続する。
このとき、既存端末装置A1は、制御部213が接続手段として機能して、既存端末装置A1を頂点とするツリーとの接続を維持した状態で新規端末装置N1の下層側に子端末Aとして接続する。
このように、新規端末装置N1を、この新規端末装置N1より配信能力の低い既存端末装置A1〜A7、B1〜B7よりも上層に接続することにより、階層構造の下層側に接続している既存端末層装置A1〜A7に対して、コンテンツデータを安定して配信することができる。
また、図7に示すように、新規端末装置N1を再接続した際に、新規端末装置N1の枝を残しておくことで、次にこの階層構造に参加してくる端末装置A又は、親端末Aとの接続を切断された端末装置Aをこの配信能力の比較的高い新規端末装置N1の枝に接続することができ、これら新規端末装置N1の枝に接続した端末装置Aに対しても、コンテンツデータを安定して配信することができる。
また、管理サーバ2の制御部312は、新規端末装置N1が階層構造に最初に接続してから所定時間が経過した際に、比較手段として機能して、新規端末装置N1の配信能力と、この新規端末装置N1が接続されている階層よりも上層の既存端末装置Aの配信能力とを比較するが、このとき、既存端末装置Aの配信能力が新規端末装置N1の配信能力以上の場合には、新規端末装置N1の再接続は行わず、この新規端末装置N1は階層構造の末端に接続された状態を維持する。
一方、既存端末装置Aの配信能力よりも新規端末装置N1の配信能力が高い場合には、管理サーバ2の制御部312が再接続手段として機能し、新規端末装置N1の再接続を行うが、この際、新規端末装置N1の下層側に子端末Aとして接続する既存端末装置Aを選択する場合には、第2再接続先候補選択手段として機能し、以下に示す4つの基準に基づいて、再接続先候補を選択するようにしている。
基準1:管理サーバ2の制御部312は、比較手段として機能して、階層構造の上層側に接続されている既存端末装置Aから順に、新規端末装置N1との配信能力の比較を行う。
そして、同一階層内で新規端末装置N1よりも配信能力が小さい既存端末装置Aが唯一決まる場合には、その既存端末装置Aを新規端末装置N1の子端末Aとして新規端末措置N1の枝に接続させる。
すなわち、図8に示すように、配信能力(3)を有する新規端末装置N1が既存端末装置B4に接続された場合、管理サーバ2の制御部312は、新規端末装置N1が階層構造に接続して所定時間が経過したときに比較手段として機能し、階層構造の上層側に接続している同一階層の既存端末装置A1、B1から順に新規端末装置N1との配信能力の比較を行う。
ここでは、階層構造の最上層に接続している既存端末装置A1、B1のうち、既存端末装置A1の配信能力が(2)であり、新規端末装置N1の配信能力(3)よりも低いため、管理サーバ2の制御部312は、新規端末装置N1を放送局1の子端末Aとして接続すると共に、第2再接続先候補選択手段として機能して、この既存端末装置A1を新規端末装置N1の子端末Aとして接続する。
このとき、既存端末装置A1は、この既存端末装置Aを頂点とするツリーとの接続を維持した状態で新規端末装置N1と接続するようにしている。
こうすることにより、新規端末装置N1は、階層構造において自身よりも配信能力の低い既存端末装置Aよりも上層に接続されることとなるため、この新規端末装置N1によりコンテンツデータの配信を受ける既存端末装置Aに対して、コンテンツデータを安定して配信することができるようになる。
基準2:基準1において、新規端末装置N1の下層側に子端末Aとして接続可能な既存端末装置Aの候補が複数存在した場合には、複数の候補となった既存端末装置Aのうち、その既存端末装置Aを頂点としたツリーの階層が最も浅い既存端末装置Aを新規端末装置N1の子端末Aとして接続する。
すなわち、図9に示すように、配信能力(3)を有する新規端末装置N1が既存端末装置A3に接続された場合、管理サーバ2の制御部312は、新規端末装置N1が階層構造に接続してから接続して所定時間が経過したときに、比較手段として機能して、階層構造の上層側に接続している同一階層の既存端末装置A1、B1から順に新規端末装置N1の配信能力との比較を行う。
ここでは、最上層で同一階層に接続している既存端末装置A1、B1は共に配信能力が(3)であり、新規端末装置N1の配信能力(3)よりも低くないため、管理サーバ2の制御部312は、比較手段として機能して、次に1階層下の階層で同一階層に接続されている既存端末装置A2〜A4、B2〜B4と新規端末装置N1との配信能力を比較する。
ここで、同一階層に接続されている既存端末装置A2〜A4、B2〜B4の配信能力は全て(2)であり、新規端末装置N1の配信能力(3)よりも低いが、基準1では唯一に決まらない。
そこで、管理サーバ2の制御部312は、基準2に基づき、同一階層に接続している既存端末装置A2〜A4、B2〜B4のうち、接続しているツリーの階層が最も浅い既存端末装置A4を新規端末装置N1の子端末Aとして選択する。
そして、管理サーバ2の制御部312は、新規端末装置N1を最上層に接続されている既存端末装置A1の子端末Aとして接続すると共に、第2再接続先候補選択手段として機能して、基準2により選択した既存端末装置A4を新規端末装置N1の下層側に子端末Aとして接続させる。
こうすることにより、新規端末装置N1は、階層構造において自身よりも配信能力の低い既存端末装置Aよりも上層に接続されることとなり、しかも、新規端末装置N1の下層側には、階層の浅いツリーが接続されることとなるため、階層構造全体としての深さが深くなることを防止でき、この新規端末装置N1によりコンテンツデータの配信を受ける既存端末装置Aに対して、コンテンツデータを安定して配信することができるようになる。
基準3:基準2において、新規端末装置N1に子端末Aとして接続可能な既存端末装置Aの候補が複数存在した場合に、管理サーバ2の制御部312は、第2歳接続先候補選択手段として機能して、候補として残った複数の既存端末装置Aのうち、階層構造に接続してからの時間が短い方の既存端末装置Aを、新規端末装置N1の子端末Aとして接続する。
こうすることにより、階層構造に接続している時間が長い(比較的配信能力の高い)既存端末装置Aを階層構造において下層側へ移動させることがなくなるため、階層構造の下層側に接続されている既存端末装置Aに対して、コンテンツデータを安定して送信することができる。
基準4:基準3において、新規端末装置N1に子端末Aとして接続可能な既存端末装置Aの候補が複数存在した場合に、管理サーバ2の制御部312は、第2再接続先候補選択手段として機能して、候補として残った複数の既存端末装置Aの中から、新規端末装置N1の子端末Aとして接続する既存端末装置Aをランダムに選択する。
[2.4.2.方法2:新規端末装置N1を再接続する際に、新規端末装置N1の枝を順次埋めていく方法]
図7に示すように、新規端末装置N1が放送局1に接続されて所定時間が経過すると、管理サーバ2の制御部312は、新規端末装置N1の子端末Aである既存端末装置A1の下層側に接続している既存端末装置A3に対して、新たな親端末Aとして新規端末装置N1を指示する。
この指示に基づいて、既存端末装置A3は、図10に示すように、新規端末装置N1の子端末Aとして新規端末装置N1の下層側に接続することによって、新規端末装置N1の余っている枝を一つ埋める。
その後、管理サーバ2の制御部312は、新規端末装置N1に未だ余っている枝が1つあるため、既存端末装置A3が新規端末装置N1に接続してから所定時間が経過すると、既存端末装置A1の下層側に接続している既存端末装置A2に対して、新たな親端末Aとして新規端末装置N1を指示する。
この指示に基づいて、既存端末装置A2は、図11に示すように、新規端末装置N1の子端末Aとして下層側に接続することによって、新規端末装置N1の余っている枝を一つ埋める。
このように新規端末装置N1の余っている枝を埋めていくことにより、図7に示す新規端末装置N1の下層側に接続した既存端末装置A1を頂点としたツリーの階層を浅くして階層構造全体の深さを再構築することができるため、階層構造の下層側に接続している既存端末装置Aに対して、コンテンツデータを安定して配信することができる。
しかも、新規端末装置N1の枝を埋める際に、既存端末装置A1を新規端末装置N1に接続してから所定時間が経過した後に、既存端末装置A3を新規端末装置N1に接続し、既存端末装置A3を新規端末装置N1に接続してから所定時間が経過した後に、既存端末装置A2を新規端末装置N1に接続させることによって、新規端末装置N1がコンテンツデータを配信する際の負担を軽減することができる。
なお、この所定時間が経過する前に、図12に示すように、新規端末装置N1の余っている枝が、他の端末装置A8、A9により埋められた場合、管理サーバ2の制御部312は、既存端末装置A1の子端末A2、A3のうちのいずれかを移動させて新規端末装置N1に接続させても階層構造全体の深さが変化しないため、これら既存端末装置A1の子端末A2、A3は移動させない。
ただし、管理サーバ2の制御部312は、階層構造が図12に示す状態となった場合、既存端末装置A6、A7を他の端末装置A8の下層側に子端末Aとして接続すると共に、既存端末装置A4、A5を他の端末装置A9の下層側に子端末Aとして接続すれば、階層構造全体の深さを浅く再構築することができるので、この場合には、既存端末装置A4〜A7の再接続を行う。
また、この方法2において、管理サーバ2の制御部312は、新規端末装置N1が階層構造に最初に接続してから所定時間が経過した際に、比較手段として機能して、新規端末装置N1の配信能力と、この新規端末装置N1が接続されている階層よりも上層の既存端末装置Aの配信能力とを比較するが、このとき、既存端末装置Aの配信能力が新規端末装置N1の配信能力以上の場合には、新規端末装置N1の再接続は行わず、この新規端末装置N1は階層構造の末端に接続された状態を維持する。
一方、既存端末装置Aの配信能力よりも新規端末装置N1の配信能力が高い場合には、再接続手段として機能して、新規端末装置N1の再接続を行うが、この際、新規端末装置N1の下層側に子端末Aとして接続する既存端末装置Aを選択する場合には、第2再接続先候補選択手段として機能し、以下に示す4つの基準に基づいて、再接続先候補を選択するようにしている。
基準1:方法1における基準1と同様に、管理サーバ2の制御部312は、比較手段として機能して、階層構造の上層側に接続されている既存端末装置Aから順に、新規端末装置N1の配信能力との比較を行う。
そして、同一階層内で新規端末装置N1よりも配信能力が小さい既存端末像地Aが唯一決まる場合には、その既存端末装置Aを新規端末装置N1の子端末として新規端末措置N1の枝に接続させる。
基準2:基準1において、新規端末装置N1の下層側に子端末Aとして接続可能な既存端末装置Aが複数存在した場合に、管理サーバ2の制御部312は第2再接続先候補選択手段として機能して、複数の候補となった既存端末装置Aのうち、その既存端末装置Aを頂点としたツリーの階層が最も深い既存端末装置Aを新規端末装置N1の下層側に子端末Aとして接続する。
すなわち、図13に示すように、配信能力(3)を有する新規端末装置N1が既存端末装置A3に接続された場合、管理サーバ2の制御部312は、新規端末装置N1が階層構造に接続してから接続して所定時間が経過したときに、比較手段として機能し、階層構造の上層側に接続している同一階層の既存端末装置A1、B1から順に新規端末装置N1の配信能力との比較を行う。
ここでは、最上層で同一階層に接続している既存端末装置A1、B1は共に配信能力が(3)であり、新規端末装置N1の配信能力(3)よりも低くないため、管理サーバ2の制御部312は、次に1階層下の階層で同一階層に接続されている既存端末装置A2〜A4、B2〜B4と新規端末装置N1との配信能力を比較する。
ここで、同一階層に接続されている既存端末装置A2〜A4、B2〜B4のうち、新規端末装置N1の配信能力(3)よりも配信能力の低いものは、既存端末装置A2、A3、B2〜B4の4つとなり基準1では唯一に決まらない。
このように、基準1において、新規端末装置N1に子端末Aとして接続可能な既存端末装置Aの候補が複数存在した場合に、管理サーバ2の制御部312は、第2再接続先候補選択手段として機能して、候補として残った複数の既存端末装置Aのうち、接続しているツリーの階層が最も深い既存端末装置B2を新規端末装置N1の子端末Aとして選択する。
そして、管理サーバ2の制御部312は、新規端末装置N1を最上層に接続されている既存端末装置B1の子端末Aとして接続すると共に、基準2により選択した既存端末装置B2を新規端末装置N1の下層側に子端末Aとして接続させる。
このとき、新規端末装置N1に子端末Aとして接続する既存端末装置B2は、自身を頂点としたツリーとの接続を維持した状態で新規端末装置N1に接続する。
こうすることにより、管理サーバ2の制御部312は、新規端末装置N1の下層側に既存端末装置B2を接続して所定時間が経過した後に、既存端末装置B2の子端末B5、B6又は、これら子端末B5、B6の子端末B11〜B13に対して、新規端末装置N1を新たな親端末Aとする再接続指示を出すこととなるので、結果として新規端末装置N1を頂点としたツリーの階層が浅く再構築される。
これにより、階層構造全体としての深さが深くなることを防止でき、この新規端末装置N1によりコンテンツデータの配信を受ける既存端末装置Aに対して、コンテンツデータを安定して配信することができるようになる。
基準3:基準2において、新規端末装置N1に子端末Aとして接続可能な既存端末装置Aの候補が複数存在した場合に、管理サーバ2の制御部312は、第2再接続先候補選択手段として機能して、候補として残った複数の既存端末装置Aのうち、階層構造に接続してからの時間が長い方の既存端末装置Aを、新規端末装置N1の子端末Aとして接続する。
こうすることにより、階層構造に接続している時間が長い(比較的配信能力の高い)既存端末装置Aを階層構造において下層側へ移動させることがなくなるため、階層構造の下層側に接続されている既存端末装置Aに対して、コンテンツデータを安定して送信することができる。
基準4:基準3において、新規端末装置N1に子端末Aとして接続可能な既存端末装置Aの候補が複数存在した場合に、管理サーバ2の制御部312は、第2再接続先候補選択手段として機能して、候補として残った複数の既存端末装置Aの中から、新規端末装置N1の子端末Aとして接続する既存端末装置Aをランダムに選択する。
[2.4.3.方法3:新規端末装置N1を再接続する際に、新規端末装置N1の枝を一度に埋める方法]
図6に示すように、新規端末装置N1が階層構造の最下層に接続されている既存端末装置A7に接続した状態において、管理サーバ2の制御部312は、比較手段として機能して、新規端末装置N1の配信能力と、この階層構造を構成している全ての既存端末装置Aの配信能力とを比較した上で、通知手段として機能して、複数の既存端末装置A及び新規端末装置N1に対して、同時に再接続の指示を行う。
すなわち、管理サーバ2の制御部312は、通知手段として機能することにより、新規端末装置N1に新たな親端末Aを放送局1とする指示を行い、第2再接続先候補選択手段として機能して、既存端末装置A1に新たな親端末Aを新規端末装置N1とする指示を行い、既存端末装置A2に新たな親端末Aを新規端末装置N1とする指示を行い、既存端末装置A3に新たな親端末Aを新規端末装置N1とする指示を行う。
このように、管理サーバ2の制御部312が、複数の既存端末装置A及び新規端末装置N1に対して同時に再接続の指示を行うことによって、図6に示す階層構造の状態を図11に示す階層構造の状態に一度に再構築することができる。
ただし、このように一度に階層構造を再構築した場合、新規端末装置N1は複数の子端末A1、A2、A3に対して、同時にコンテンツデータの配信を開始することとなり、新規端末装置N1に大きな負担がかかるおそれがあるため、この方法3を適用する際には、新規端末装置N1の配信能力が所定値(配信能力=95点)以上であった場合に適用することが望ましい。
このように、管理サーバ2の制御部312の制御に基づき、以上説明した方法1〜3を用いて階層構造の再構築を行うことによって、階層構造の深さを可及的に浅くなるように再構築することができるので、階層構造を構成する全ての端末装置Aに対して、コンテンツデータを安定して配信することができる。
[2.5.管理サーバ側の判断により階層構造を再構築する際の管理サーバ動作プログラムについて]
管理サーバ2の制御部312は、図14〜図18に示すフローチャートに従って制御を行う。なお、以下の説明では、管理サーバ2の制御部312を単に制御部312と呼ぶこととする。
[2.5.1.制御部312のメイン処理]
図14に示すように、メイン処理において、制御部312は、電源が投入されると新規端末装置N1からツリー(階層構造)への参加依頼パケットを受信したか否かの判断を行い(ステップS37)、参加依頼パケットを受信したと判断した場合に処理をステップS38に移し、参加依頼パケットを受信していないと判断した場合に処理をステップS40へ移す。
ステップS37において制御部312は、後述する親端末Aの紹介処理(ステップS38)を行った後、後述する配信能力の比較処理(ステップS39)を行い、その後処理をステップS37に戻す。
ステップS40において制御部312は、新規端末装置N1から、ツリーからの脱退パケットを受信したか否かの判断を行い、脱退パケットを受信したと判断した場合に処理をステップS41に移し、脱退パケットを受信していないと判断した場合に処理をステップS42に移す。
ステップS41において制御部312は、後述するツリーからの脱退処理を行い、その後処理をステップS39へ移す。
ステップS42において制御部312は、新規端末装置N1から加速送信の終了パケットを受信したか否かの判断を行い、加速送信の終了パケットを受信したと判断した場合に処理をステップS43に移し、加速送信の終了パケットを受信していないと判断した場合に処理をステップS44へ移す。
ここでいう加速送信とは、子端末Aが新たに接続された際に、新規端末装置N1がその子端末Aに対して、所定時間通常よりも早い転送速度でコンテンツデータを配信することである。
これは、子端末Aが新たな親端末Aに再接続する際に、一時的に階層構造から脱退している間、受信できなかった分のコンテンツデータを補うために新規端末装置N1が行うコンテンツデータの送信方法である。
ステップS43において制御部312は、後述する次の端末の紹介処理を行い、その後、処理をステップ39へ移す。
ステップS44において、制御部312は、その他の処理として、階層構造における各端末装置Aの配信能力の更新処理などの処理を行って処理をステップS39へ移す。
そして、制御部312は、電源が投入されている間、これらステップS37〜ステップS44までの処理を繰り返し行う。
[2.5.2.親端末の紹介処理]
この親端末の紹介処理は、図14に示すステップS37で行うものである。
図15に示すように、親端末Aの紹介処理において制御部312は、新規端末装置N1の接続先候補を選択し、新規端末装置N1へ接続先候補を示す親端末Aの紹介パケットを送信(ステップ57)した後、タイマーの初期化(ステップS58)を行い、その後、処理を図14に示すステップS39へ戻す。
このとき新規端末装置N1へ送信する親端末Aの紹介パケットには、親端末AのIPアドレス、ポート番号のセットが入っており、複数の親端末Aを紹介する場合には、これらのセットが複数個入っている。
[2.5.3.配信能力の比較処理]
この配信能力の比較処理は、図14に示すステップS39で行うものである。
図16に示すように、配信能力の比較処理において制御部312は、ステップS58で初期化したタイマーを参照することによって、新規端末装置N1にパケット(ここでは、親端末Aの紹介パケット)を送信してから所定時間が経過したか否かの判断を行い(ステップS45)、所定時間が経過したと判断した場合に処理をステップS46へ移し、所定時間が経過していないと判断した場合には、処理をステップS45へ戻す。
ステップS46において制御部312は、新規端末装置N1の配信能力を取得した後、処理をステップS47へ移す。
ステップS47において、制御部312は、既にツリーに参加していた既存端末装置Aの配信能力と、新規端末装置N1の配信能力との比較を行い、その後、処理をステップS48へ移す。
ステップS48において、制御部312は、前記比較結果に基づいて、新規端末装置N1の配信能力の方が既存端末装置Aの配信能力よりも高いと判断した場合に処理をステップS49へ移し、新規端末装置N1の配信能力が既存端末装置Aの配信能力よりも低いと判断した場合に、この配信能力の比較処理を終了して処理を図14に示すステップS37へ戻す。
ステップS49において制御部312は、新規端末装置N1の再接続先候補を選択し、その再接続先候補を示すパケットを新規端末装置N1へ送信することにより、新規端末装置N1へ新たな親端末Aを紹介する処理を行い、その後、処理をステップS50へ移す。
ステップS50において制御部312は、新たな親端末Aに接続した新規端末装置N1が子端末Aを接続可能であるか否かの判断を行い、子端末Aを接続可能な状態であると判断した場合に処理をステップS51へ移し、子端末Aを接続可能な状態でないと判断した場合に、この配信能力の比較処理を終了して処理を図14に示すステップS37へ戻す。
ステップS51において制御部312は、上記した方法1により階層構造を再構築する場合には、再接続先候補選択手段が選択した再接続先候補に接続している既存端末装置Aに対して、新規端末装置N1を新たな親端末Aとして紹介する処理を行う。
また、上記した方法3により階層構造を再構築する場合には、制御部312が第3再接続先候補選択手段として機能して、新規端末装置N1の子端末A階層構造上で下層側に接続している複数の既存端末装置に対して、新規端末装置N1を新たな親端末Aとして紹介する処理を行う。
そして、制御部312は、この処理ステップS51を行った後、処理を図1に示すステップS37へ移す。
[2.5.4.ツリーからの脱退処理]
このツリーからの脱退処理は、図14に示すステップS41で行うものである。
図17に示すように、ツリーからの脱退処理において制御部312は、接続状態情報記憶手段において、ツリーからの脱退パケットを送信してきた端末装置Aを、ツリーに参加している端末装置Aのリストから削除して更新し(ステップS55)、その後、処理をステップS56へ移す。
ステップS56において制御部312は、接続状態情報記憶手段においてトポロジー情報の更新を行い、その後処理を図14に示す処理39へ戻す。
[2.5.5.次の端末の紹介処理]
この次の端末の紹介処理は、図14に示すステップS43で行うものである。
図18に示すように、次の端末の紹介処理において制御部312は、新規端末装置N1の余った枝に子端末Aを接続させるか否かの判断を行い(ステップS152)、接続させる判断した場合に処理をステップS153へ移し、接続させないと判断した場合に、この次の端末の紹介処理を終了して処理をステップS39へ戻す。
ステップS153において制御部312は、上記した方法2の基準1〜4に基づいて、新規端末装置N1の余った枝に接続させる子端末Aを探す処理を行い、その後、処理をステップS154へ移す。
ステップS154において制御部312は、新規端末装置N1に接続する子端末Aが存在するか否かの判断を行い、存在すると判断した場合に処理をステップS155へ移し、存在しないと判断した場合に処理をステップS39へ戻す。
ステップ155において制御部312は、ステップS154で存在すると判断した複数の子端末Aの中から、新規端末装置N1に接続する子端末Aを選択し、その子端末Aへ新たな親端末Aが新規端末装置N1となったことを通知し、その後、処理をステップS39へ戻す。
[2.6.管理サーバ側の判断により階層構造を再構築する際の端末装置動作プログラムについて]
端末装置Aの制御部213は、図19〜図25に示すフローチャートに従って制御を行う。なお、以下の説明では、端末装置Aの制御部213を単に制御部213と呼び、この端末装置Aを操作するクライアントをユーザと呼ぶこととする。
[2.6.1.制御部213のメイン処理]
図19に示すように、メイン処理において、制御部213は、端末装置Aに電源が投入されている状態でユーザが端末装置Aに所定の操作を行うと、その操作に基づいて、ディスプレイ209上のチャネル選択画面で所定のチャネルを選択する画像を表示する処理(ステップS150)を行った後、処理をステップS151に移す。
ステップS151において制御部213は、後述するツリー(選択されたチャネルを配信している階層構造)への参加依頼処理を行い、その後、処理をステップS1へ移す。
ステップS1において制御部213は、管理サーバ2から親端末の紹介パケットを受信したか否かの判断を行い、受信したと判断した場合に処理をステップS3へ移し、受信しなかったと判断した場合に処理をステップS2へ移す。
ステップS3において制御部213は、後述する親端末Aへデータ要求処理を行い、その後、処理をステップS12へ移す。
ステップS12において制御部213は、ユーザにより端末装置Aの停止ボタン(図示略)が押されたか否かの判断を行い、停止ボタンが押されていないと判断した場合に処理をステップS1へ戻し、停止ボタンが押されたと判断した場合に処理をステップS13へ移す。
ステップS13において制御部213は、後述するツリー(チャネル)からの脱退処理を行い、その後、ディスプレイ209上にチャネル選択画面を表示させる処理を行って(ステップS14)、このメイン処理を終了する。
また、ステップS2において制御部213は、他の端末装置Aからコンテンツデータの配信要求があるか否かの判断を行い、配信要求がないと判断した場合には処理をステップS4へ移し、配信要求があると判断した場合には、後述する子端末Aへデータ配信処理(ステップS5)を行い、その後、処理をステップS12へ移す。
ステップS4において制御部213は、管理サーバ2からデータ配信停止パケットを受信したか否かの判断を行い、データ配信停止パケットを受信していないと判断した場合に処理をステップS6へ移し、データ配信停止パケットを受信したと判断した場合には、後述する配信停止処理(ステップS7)を行い、その後、処理をステップS12へ戻す。
ステップS6において制御部213は、親端末Aがツリーから脱退したことを示す親端末Aの脱退パケットを受信したか否かの判断を行い、親端末Aの脱退パケットを受信していないと判断した場合に処理をステップS8へ移し、親端末Aの脱退パケットを受信したと判断した場合に、接続先紹介要求送信手段として機能して、後述するツリー(チャネル)への参加依頼処理(ステップS9)を行い、その後、処理をステップS12へ移す。
ステップS8において制御部213は、主記憶装置203にコンテンツデータであるデータパケットが存在しているか否かの判断を行い、データパケットが存在していないと判断した場合には、ユーザの他の操作に基づいてその他の処理(ステップS10)を行う。
一方、制御部213は、データパケットが存在していると判断した場合に、コンテンツデータの再生処理(ステップS11)を行い、その後、処理をステップS12へ戻す。
[2.6.2.ツリーへの参加依頼処理]
このツリーへの参加依頼処理は、図19に示すステップS151及びステップS9で行うものである。
図20に示すように、ツリーへの参加依頼処理において制御部213は、管理サーバ2へ参加依頼パケットを送信(ステップS15)した後、タイマーを初期化(ステップS16)し、その後、処理をステップS17へ移す。
ステップS17において制御部213は、ステップS16で初期化したタイマーを参照することにより、所定時間が経過したか否かの判断を行い、所定時間が経過したと判断した場合に処理をステップS15へ戻し、所定時間が経過していないと判断した場合に処理をステップS18へ移す。
ステップS18において制御部213は、管理サーバ2から親端末Aの紹介パケットを受信したか否かの判断を行い、親端末Aの紹介パケットを受信していないと判断した場合に処理をステップS17へ戻し、親端末Aの紹介パケットを受信したと判断した場合に、このツリーへの参加依頼処理を終了して処理を図19のステップS1へ戻す。
[2.6.3.親端末へデータ要求処理]
この親端末へデータ要求処理は、図19に示すステップS3で行うものである。
図21に示すように、親端末Aへデータ要求処理において制御部213は、親端末Aと接続しているか否かの判断を行い(ステップS23)、親端末Aと接続していると判断した場合にその親端末Aとの接続を切断する処理(ステップS24)を行った後、処理をステップS25へ移し、親端末Aと接続していないと判断した場合に処理をステップS25へ移す。
ステップS25において制御部213は、新しい親端末Aへデータ配信依頼パケットを送信し、その後、接続手段として機能して、データ配信依頼パケットを送信した新たな親端末Aに接続した後、タイマーを初期化し(ステップS26)、処理をステップS27へ移す。
ステップS27において制御部213は、ステップS26で初期化したタイマーを参照することによって所定時間が経過したか否かの判断を行い、所定時間が経過したと判断した場合に処理をステップS25へ移し、所定時間が経過していないと判断した場合に処理をステップS28へ移す。
ステップS28において制御部213は、接続している親端末Aから配信OKパケットを受信したか否かの判断を行い、配信OKパケットを受信していないと判断した場合に処理をステップS27へ戻し、配信OKパケットを受信したと判断した場合に、この親端末Aへデータ要求処理を終了して処理を図19のステップS12へ処理を戻す。
[2.6.4.子端末へデータ配信処理]
この子端末へデータ配信処理は、図19に示すステップS5で行うものである。
図22に示すように、子端末Aへデータ配信処理において制御部213は、自身の配信能力に余裕があるか否かの判断を行う(ステップS29)。
すなわち、制御部213は、子端末Aに接続してコンテンツデータを配信可能な状態であるか否かの判断を行い、子端末Aに接続してコンテンツデータを配信可能な状態であると判断した場合に処理をステップS30へ移し、子端末Aに接続してコンテンツデータを配信可能な状態でないと判断した場合に処理をステップS32へ移す。
ステップS30において制御部213は、現在加速送信中であるか否かの判断を行い、加速送信中でないと判断した場合に処理をステップS31へ移し、加速送信中であると判断した場合に処理をステップS32へ移す。
ステップS31において制御部213は、配信OKパケットを新たな子端末Aへ送信した後、その新たな子端末Aへコンテンツデータを配信し、ステップS32において制御部213は配信NGパケットを新たな子端末Aへ送信し、その後、この子端末Aへデータ配信処理を終了して処理を図19に示すステップS12へ戻す。
[2.6.5.配信停止処理]
この配信停止処理は、図19に示すステップS7で行うものである。
図23に示すように、配信停止処理において制御部213は、接続している子端末Aへのコンテンツデータの配信を停止する処理(ステップS36)を行った後、この配信停止処理を終了して処理を図19に示すステップS12へ戻す。
[2.6.6.再生処理]
この再生処理は、図19に示すステップS11で行うものである。
図24に示すように、再生処理において制御部213は、再生手段として機能して、コンテンツデータを再生する処理(ステップS33)を行い、子端末Aが存在しているか否かの判断を行い(ステップS34)、子端末Aが存在すると判断した場合には、転送手段として機能して、子端末Aへコンテンツデータを転送する処理を行い(ステップS35)、子端末Aが存在していないと判断した場合には、この再生処理を終了して処理を図19のステップS12へ戻す。
[2.6.7.ツリーからの脱退処理]
このツリーからの脱退処理は、図19に示すステップS13で行うものである。
図25に示すように、ツリーからの脱退処理において制御部213は、ツリーから脱退することを示すパケットを管理サーバ2へ送信することにより、ツリーから脱退することを管理サーバ2に通知し(ステップS19)、その後、処理をステップS20へ移す。
ステップS20において、制御部213は、親端末Aに配信停止パケットを送信し、その後、処理をステップS21へ移す。
ステップS21において、制御部213は、子端末Aが存在するか否かの判断を行う。すなわち、制御部213は、現在子端末Aと接続しているか否かの判断をおこない、子端末Aと接続していないと判断した場合に、このツリーからの脱退処理を終了して処理を図19に示すステップS14へ移す。
一方、子端末Aと接続していると判断した場合に制御部213は、子端末Aに対して、親端末Aである自身がツリーから脱退することを示すパケットを送信し(ステップS22)、その後、このツリーからの脱退処理を終了して処理を図19に示すステップS14へ戻す。
以上説明したように、第1実施形態における管理サーバ2の動作を示すフローチャートにおいて、ステップS38、S57の処理は、制御部312が接続先候補選択手段として機能して行うものであり、ステップS57の処理は、制御部312が通知手段として機能して行うものであり、ステップS46の処理は、制御部 312が配信能力取得手段として機能して行うものであり、ステップS39、S47、S48、S155の処理は、制御部312が比較手段として機能して行うものであり、ステップS49の処理は、制御部312が再接続先候補選択手段として機能して行うものであり、ステップS42、S51、S153、S155の処理は、制御部312が第2再接続先候補選択手段として機能して行うものであり、ステップS50の処理は、制御部312が判断手段として機能して行うものであり、ステップS51の処理は制御部312が第3再接続先選択手段として機能して行うものである。
また、端末装置Aの動作を示すフローチャートにおいて、ステップS9、S15、S25、S151の処理は、制御部213が接続先紹介要求送信手段として機能して行うものであり、ステップS1、S18の処理は、制御部213が接続先候補受信手段として機能して行うものであり、ステップS25は、制御部213が接続手段として機能して行うものであり、ステップS2の処理は、制御部213が中継依頼受信手段として機能して行うものであり、ステップS5、S31、S35は制御部213が転送手段として機能して行うものである。
[3.第2実施形態]
ここで、第2実施形態に係るコンテンツデータ配信システムSを構成する放送局1、管理サーバ2、端末装置A'(図26〜図38に示す端末装置A'、A'1〜15、B'1、N'1)について、それらの具体的な構成及び動作について図面を参照して説明する。
[3.1.放送局1の構成について]
第2実施形態における放送局1は、図3に示す第1実施形態における放送局1と同様の構成であるため、その説明は省略する。
[3.2.端末装置A'の構成等の説明]
次に、図26を参照して、クライアント側の端末装置A'の構成及び動作について説明する。
図26は、本実施形態における端末装置A'の概略構成例を示す機能ブロック図である。この端末装置A'は、図4に示す端末装置Aと基本的構成は同様であるが、第1の記憶部202に配信能力評価プログラム225を備えているところだけが異なる。
そのため、以下の説明において、図4に示す端末装置Aと同一の構成要件については、同一の符号を付することによりその説明を省略する。
(第1の記憶部202について)
この端末装置A'が有する第1の記憶部202には、端末装置Aのコンピュータとしての基本的な機能を提供するためのOSのプログラム220と、放送局1から直接又は他の端末装置A'に中継されてストリーミング配信されるコンテンツデータを受信するためのストリーム制御プログラム221と、ツリー状に接続された1段上層の端末(放送局1又は端末装置A')のIPアドレスとツリー状に接続された1段下層の端末装置A'のIPアドレスの管理等を行なうためのトポロジー制御プログラム222と、ディスプレイ209を制御するための画面制御プログラム223と、エンコードされたコンテンツデータをデコードするためのデコーダプログラム224と、1段上層の端末A'及び自端末装置A'の配信能力を評価するための配信能力評価プログラム225等を記憶しており、これらはCPU201によって読み出され、CPU201によってこれらのプログラムに従った機能が実行される。
ここで、OSプログラム220は、CPU201によって読み出されて実行されることにより、リモコン205の入出力に関する機能や、第1の記憶部202や第2の記憶部203などのメモリ管理などの端末装置Aであるコンピュータの基本的な機能を実行可能にするものである。そして、このOSプログラム220がCPU201によって実行された状態で、上述のストリーム制御プログラム221、トポロジー制御プログラム222、画面制御プログラム223、デコーダプログラム224、配信能力評価プログラム225等が実行される。
(制御部213について)
制御部213は、上述のようにCPU201と第1の記憶部202とから構成され、CPU201が第1記憶部202に記憶された各種プログラム220〜225を読み出して実行することにより、端末装置A全体を統括制御し、かつ、後述する接続先紹介要求送信手段、接続先候補受信手段、接続手段、再生手段、中継依頼受信手段、転送手段、判断手段、配信能力取得手段、比較手段、再接続手段等として機能させるようになっている。
(接続先紹介要求送信手段について)
接続先紹介要求送信手段は、端末装置A'が階層構造に新規に接続する際に、管理サーバ2に対して新規参加を依頼するための接続先紹介要求を示すデータ(以下、「参加依頼パケット」という。)を送信するものである。このとき接続先紹介手段は、参加依頼パケットと共に、自身の配信能力を管理サーバ2へ送信するものである。
(接続先候補受信手段について)
接続先候補受信手段は、管理サーバ2から送信される階層構造における接続先候補を示すデータ(以下、「親端末の紹介パケット」という。)を受信するものであり、この親端末の紹介パケットには、端末装置A'が階層構造に参加した後、この端末装置A'に対して直接コンテンツデータを配信する既存端末装置A'(以下、「親端末A'」ともいう。)のIPアドレスを示すデータが含まれている。
なお、参加依頼パケットを送信した端末装置A'が新規端末装置N1であった場合には、階層構造における末端に接続している既存端末装置A'のIPアドレスが接続先候補として送信される。
(接続手段について)
接続手段は、制御部212が接続先候補受信手段として機能して受信した接続先候補のIPアドレスに対応した親端末A'に接続することにより、この端末装置A'を階層構造に組み込むものである。
こうして接続手段により親端末A'と接続した後、この端末装置Aの制御部213は、第1の記憶部202に記憶しているストリーム制御プログラム221に基づいて、親端末装置A'から配信されるコンテンツデータを第1の記憶部202のバッファ領域に順次記憶すると共に、記憶したコンテンツデータを後述する再生手段により順次再生するストリーム制御を行う。
(再生手段について)
再生手段は、第1の記憶部202のバッファ領域に順次記憶したコンテンツデータを順次再生するものであり、このとき制御部213は、ストリーム制御プログラム221に基づいてビデオチップ208及び音源チップ210を動作させることによりコンテンツデータを再生するものである。
(中継依頼受信手段について)
中継依頼受信手段は、他の端末装置A'からコンテンツデータの中継依頼を示すデータ(以下、「データ配信依頼パケット」という。)を受信するものである。
(転送手段について)
転送手段は、子端末A'が接続されており、現在コンテンツデータの中継が可能な状態である場合に、第1の記憶部202のバッファ領域に順次記憶してきたコンテンツデータを子端末A'に中継して配信するものである。
(判断手段について)
判断手段は、現在、新たな子端末A'(コンテンツデータを中継して直接配信する端末装置A')にコンテンツデータを配信可能な状態であるか否かを判断するものである。
端末装置A'の制御部213は、この判断手段として機能する際に、自身の配信能力に余裕があると判断した場合、新たな子端末A'にコンテンツデータを配信可能な状態であると判断する。
また、端末装置A'の制御部213は、現在接続している子端末A'に対して加速送信を行っていないと判断した場合にも、新たな子端末A'にコンテンツデータを配信可能な状態であると判断する。
この加速送信とは、子端末A'が新たに接続された際に、親端末A'がその子端末A'に対して、所定時間通常よりも早い転送速度でコンテンツデータを配信することである。
これは、子端末A'が新たな親端末A'に再接続する際に、一時的に階層構造から脱退している間、受信できなかった分のコンテンツデータを補うために親端末A'が行うコンテンツデータの送信方法である。
そして、端末装置A'の制御部213は、新たな子端末Aにコンテンツデータを配信可能な状態であると判断した場合に、子端末A'に対して配信OKパケットを送信した後、コンテンツデータの転送を行う制御を実行し、新たな子端末A'にコンテンツデータを配信可能な状態でないと判断した場合に、子端末A'に対して配信NGパケットを送信してコンテンツデータの転送を行わない制御を実行する。
(配信能力取得手段について)
配信能力取得手段は、親端末A'及び、自端末装置A'の配信能力を取得して、一時的に第1の記憶部202のバッファ領域内の所定領域に記憶させておくものである。
(比較手段について)
比較手段は、新規端末装置N1の配信能力と、既存端末装置A'の配信能力とを所定のタイミングで比較するものである。
すなわち、この比較手段は、第1の記憶部202に記憶させている自身の配信能力と、親端末A'の配信能力とを比較するものであり、この比較は、自端末装置A'が階層構造に接続する度に、自身の配信能力と親端末A'の配信能力とを比較するようにしている。
所定のタイミングとしては、新規端末装置N1が階層構構造に接続してから一定時間(たとえば、1分間。)経過したとき、若しくは、新規端末装置N1が階層構造に接続してから所定量のコンテンツデータ(たとえば、100パケットのコンテンツデータ)を受信したとき、又は、新規端末装置N1が十分な量のデータを受信した(第1の記憶部202のバッファ領域の80%にコンテンツデータが記憶された)ときとするようにしている。
(再接続手段について)
再接続手段は、制御部213が比較手段として機能して行った比較の結果、新規端末装置N1の配信能力が既存端末装置A'の配信能力よりも高い場合に、新規端末装置N1と、この新規端末装置N1にコンテンツデータを直接配信している既存端末装置A'とを入れ替えて階層構造に再接続させることにより、新規端末装置N1を配信応力の低い既存端末装置A'よりも階層構造上における上層に再接続させるものである。
すなわち、比較手段による配信能力の比較結果、自身の配信能力が親端末A'(自身に対してコンテンツデータを直接配信する端末装置A')の配信能力よりも高い場合に、親端末A'を自身の子端末Aとして接続すると共に、親端末A'がそれまで接続していた既存端末装置A'を新しい親端末A'として再接続することにより、自端末装置A'を階層構造に再接続させるようにしている。
このとき、新規端末装置N1と入れ替わって階層構造に再接続する既存端末装置Aは、自身に接続している子端末Aとの接続を維持した状態のまま、新規端末装置N1と入れ替わるようにしている。
また、この端末装置A'では、上記した配信能力取得手段と、比較手段と、再接続手段とを主たる構成要件とした再接続装置を備えており、この再接続装置により、接続先候補に接続した新規端末装置N1を、所定のタイミングにおいて新規端末装置N1の配信能力に応じて、現在の階層と異なる階層に再接続させることを可能としている。
[3.3.管理サーバ2の構成等の説明]
第2実施形態における管理サーバ2は、図5に示す管理サーバ2と基本的構成は同様であるが、第1の記憶部302に記憶している配信能力評価プログラム321の内容だけが異なる。
すなわち、第2実施形態では、新規端末装置N'1が再接続を行う度に、自ら自身の配信能力と、接続した親端末A'の配信能力とを比較し、その比較結果に基づいて現在接続している階層と異なる階層に再接続するため、管理サーバ2は、新規端末装置N'1が再接続を行う度に配信能力の評価を行うことはない。
ただし、この管理サーバ2は、階層構造を構成している既存端末装置A'の配信能力だけは記憶しており、新規端末装置N'1が最初に階層構造へ接続するときにだけ、新規端末装置N'1と既存端末装置A'の配信能力の評価を行うようにしている。
そして、その評価に基づいて、階層構造に接続している複数の既存端末装置A'から新規端末装置N'1の接続先となる既存端末装置を選択して紹介して、新規端末装置N'1が階層構造に接続した後には、その新規端末装置N'1に関する配信能力の評価を行わない。
そのため、以下の説明において、図4に示す端末装置A'と同一の構成要件については、同一の符号を付することによりその説明を省略する。
(第1記憶部302について)
また、第1記憶部302には、管理サーバ2のコンピュータとしての基本的な機能を提供するためのOSのプログラム320と、新規端末装置N'1が最初に階層構造へ接続したときにだけ各端末装置A'の配信能力を評価するための配信能力評価プログラム321と、階層構造を構築及び管理等するためのトポロジー制御プログラム322と、端末装置A'から送信される接続先紹介要求に対応する接続先候補を判定し、端末装置A'へ接続先候補のデータ(親端末A'の紹介パケット)を送信等するための接続先紹介プログラム324等を記憶しており、これらはCPU301によって読み出され、CPU301によってこれらのプログラムに従った機能が実行される。
ここで、OSプログラム320は、CPU301によって読み出されて実行されることにより、キーボード305やマウス306の入出力に関する機能や、第1記憶部302や第2記憶部303などのメモリ管理などの管理サーバ2であるコンピュータの基本的な機能を実行可能にするものである。そして、このOSプログラム320がCPU301によって実行された状態で、配信能力評価プログラム321、トポロジー制御プログラム322、接続先紹介プログラム324等が実行される。
(第2記憶部303について)
第2記憶部303であるハードディスク装置には、階層構造を構成する複数の端末装置の各配信能力に関する情報を記憶する配信能力データベース314と、各端末装置の階層構造における接続状態を示す情報を記憶するトポロジーデータベース313とを備えており、接続状態情報記憶手段として機能するものである。
(制御部312について)
制御部312は、上述のようにCPU301と第1記憶部302と第2記憶部303から構成され、CPU301が第2記憶部303から各端末装置A'の配信能力に関する情報及び、その端末装置A'の階層構造における接続状態を示す情報を読み出すと共に、第1記憶部302に記憶された各種プログラム320、321、322、324を読み出して実行することにより、管理サーバ2全体を統括制御し、かつ、後述する接続先候補選択手段、通知手段、配信能力取得手段、比較手段等として機能するものである。なお、比較手段は、上記のように新規端末装置N'1が最初に階層構造へ接続するときのみ機能するものである。
(接続状態情報記憶手段について)
接続状態情報記憶手段は、階層構造に接続している複数の端末装置A'毎に、各端末装置A'が接続している階層構造におけるIPアドレスを記憶すると共に、階層構造における現在、端末装置A'が接続可能なIPアドレスを記憶するものであり、これらの接続状態情報は、階層構造に新規端末装置N'1が参加したとき、及び、既存端末装置A'が階層構造から脱退したときに、逐次更新して記憶するようにしている。
(接続先候補選択手段について)
接続先候補選択手段は、新規端末装置N'1から接続先要求である参加依頼パケットを受信したときに、接続状態情報記憶手段を参照して、階層構造上で現在、端末装置A'を接続可能な状態となっているIPアドレスのうち、階層構造の末端に接続されている既存端末装置A'を選択し、この末端の既存端末装置A'に対応するIPアドレスを新規端末装置N'1の接続先候補として選択するようにしている。尚、後述するように、階層構造に接続している複数の既存端末装置A'の配信能力と新規端末装置N'1の配信能力とを評価して接続先となる既存端末装置を選択する。
(通知手段について)
通知手段は、制御部312が接続先候補選択手段として機能して選択したIPアドレスを親端末A'の紹介パケットとして、参加依頼パケットを送信してきた新規端末装置N'1に送信するものである。
(配信能力取得手段について)
配信能力取得手段は、階層構造に端末装置A'が接続する度に、その端末装置A'から送信される参加依頼パケットから、その端末装置A'の配信能力を取得して配信能力記憶手段に記憶させるものである。
また、この配信能力取得手段は、既に階層構造に接続している端末装置A'に関して、階層構造に接続している時間が所定時間(たとえば、10分、1時間など)を越えたときに、その既存端末装置A'の配信能力を逐次更新して配信能力記手段に記憶させるようにしている。
(比較手段について)
比較手段は、新規端末装置N'1が最初に階層構造へ接続したときにのみ、新規端末装置N'1の配信能力と、配信能力記憶手段に記憶している既存端末装置A'の配信能力とを比較するものである。
[3.4.端末装置A'側の判断により階層構造を再構築する方法について]
端末装置A'の判断により階層構造を再構築するにあたり、新規端末装置N'1を最初にツリーに接続する際には、以下に記載する3つの基準に基づいて新規端末装置N'1をツリーに接続するようにしている。
基準1:まず、管理サーバ2により、放送局1に接続している複数のツリーに参加している既存端末装置A'の配信能力と、新規端末装置N'1の配信能力との比較を行う。
このとき、管理サーバ2は、ツリーの上層側に接続している既存端末装置A'から順に、新規端末装置N'1と配信能力の比較を行っていき、同一階層内に新規端末装置N'1よりも配信能力の低い既存端末装置A'が唯一存在する場合に、その既存端末装置A'の下層側に接続しているツリー(以下、「子ツリー」という。)の末端に新規端末装置N'1を接続することにより、新規端末装置N'1を階層構造に新たに参加させる。
具体的には、図27に示すように、新規端末装置N'1の配信能力が(4)である場合に、管理サーバ2により階層構造の上層側に接続している既存端末装置A'1、A'2、A'3の配信能力と、新規端末装置N'1の配信能力とを比較すると、新規端末装置N'1の配信能力よりも低い配信能力を有する既存端末装置A'は、唯一既存端末装置A'1だけである判断される。
そのため、管理サーバ2は、新規端末装置N'1に対して既存端末装置A'1に接続している子ツリーの末端の既存端末装置A'を、新規端末装置N'1の親端末A'として指示する。
こうすることにより、新規端末装置N'1が自立的に判断して階層構造を再構築する際に、新規端末装置N'1が最終的にその子ツリーの中で最も高い階層まで移動することができるので、新規端末装置N'1の下層側に接続する端末装置A'に対してコンテンツデータを安定して配信することができる。
基準2:基準1を適用した際に、新規端末装置N'1の接続先候補となる子ツリーが複数存在した場合は、複数の接続先候補となった子ツリーの最上層に接続している既存端末装置A'のうち、最も配信能力の低い既存端末装置A'に接続した子ツリーの末端に新規端末装置N'1を接続する。
具体的には、図28に示すように、新規端末装置N'1の配信能力が(5)である場合に、管理サーバ2により階層構造の上層側に接続している既存端末装置A'1、A'2、A'3の配信能力と、新規端末装置N'1の配信能力とを比較すると、新規端末装置N'1の配信能力よりも低い配信能力を有する既存端末装置A'は、既存端末装置A'1、A'2の2つと判断される。
そのため、管理サーバ2は、この既存端末装置A'1、A'2のうち配信能力の最も低い既存端末装置A'1に接続している子ツリーの末端の既存端末装置A'を新規端末装置N'1の親端末A'として指示する。
こうすることにより、新規端末装置N'1が自立的に判断して階層構造を再構築する際に、新規端末装置N'1が最終的にその子ツリーの中で最も高い階層まで移動することができるので、新規端末装置N'1が最終的にその子ツリーの中で最も高い階層まで移動することができるので、新規端末装置N'1の下層側に接続する端末装置A'に対してコンテンツデータを安定して配信することができる。
基準3:基準を適用した際に、新規端末装置N'1の接続先候補となる子ツリーが複数存在した場合は、複数の接続先候補となった子ツリーの最上層に接続している既存端末装置A'のうち、この階層構造に接続している時間が長い既存端末装置A'の子ツリーの末端に新規端末装置N'1を接続させる。
具体的には、図29に示すように、新規端末装置N'1の配信能力が(5)である場合に、管理サーバ2により階層構造の上層側に接続している既存端末装置A'1、A'2、A'3の配信能力と、新規端末装置N'1の配信能力とを比較すると、新規端末装置N'1の配信能力よりも低い配信能力を有する既存端末装置A'は、既存端末装置A'1、A'2の2つと判断され、しかも、この2つの既存端末装置A'1、A'2は共に同一の配信能力を有していると判断される。
ここで、管理サーバ2は、既存端末装置A'2の方が既存端末装置A'1よりもこの階層構造に接続している時間が長いと判断した場合に、既存端末装置A'2に接続している子ツリーの末端に新規端末装置N'1を接続させる。
こうすることにより、新規端末装置N'1が自立的に判断して階層構造を再構築する際に、新規端末装置N'1がこの子ツリーの最上層に移動するまでの間に、この子ツリーが階層構造から切断される可能性が低いので、新規端末装置N'1が最終的にこの子ツリーの最上層まで移動する可能性が高くなる。
そのため、新規端末装置N'1が子ツリーの最上層まで移動した後には、新規端末装置N'1の下層側に接続する端末装置A'に対してコンテンツデータを安定して配信することができる。
次に、新規端末装置N'1が階層構造に最初に接続した後、新規端末装置N'1が自立的に判断して階層構造を再構築する2つの方法について説明する。
[3.4.1.方法1:親端末A'と入れ替わって階層構造に再接続していく方法]
図30に示すように、新規端末装置N'1が階層構造の末端に接続している既存端末装置A'7に接続されて所定時間が経過すると、新規端末装置N'1の制御部213は、比較手段として機能して、新規端末装置N'1の配信能力と親端末A'である既存端末装置A'7の配信能力との比較を行う。
ここでは、新規端末装置N'1の配信能力(3)が親端末A'である既存端末装置A'7の配信能力(2)よりも高いため、新規端末装置N'1の制御部213は、再接続手段として機能して、親端末A'である既存端末装置A'7と入れ替わって階層構造に再接続することにより、図31に示すように階層構造を再構築する。
すなわち、新規端末装置N'1は、図31に示すように、既存端末装置A'3を親端末A'とすると共に、既存端末装置A'7を子端末A'として再接続することにより階層構造を再構築する。
次に新規端末装置N'1の制御部213は、親端末A'である既存端末装置A'3に再接続してから所定時間が経過すると、比較手段として機能して、自身(新規端末装置N'1)の配信能力と、親端末A'である既存端末装置A'3の配信能力との比較を行う。
ここでは、新規端末装置N'1の配信能力(3)が親端末A'である既存端末装置A'3の配信能力(2)よりも高いため、新規端末装置N'1の制御部213は、再接続手段として機能して、親端末A'である既存端末装置A'3と入れ替わって階層構造に再接続することにより、図32に示すように階層構造を再構築する。
すなわち、新規端末装置N'1は、図32に示すように、既存端末装置A'1を親端末A'とすると共に、既存端末装置A'3を子端末A'として再接続することにより階層構造を再構築する。
次に新規端末装置N'1の制御部213は、親端末A'である既存端末装置A'1に再接続してから所定時間が経過すると、比較手段として機能して、自身の配信能力と、親端末A'である既存端末装置A'1の配信能力との比較を行う。
ここでは、新規端末装置N'1の配信能力(3)が親端末A'である既存端末装置A'1の配信能力(2)よりも高いため、新規端末装置N'1の制御部213は、再接続手段として機能して、親端末A'である既存端末装置A'1と入れ替わって階層構造に再接続することにより、図33に示すように階層構造を再構築する。
すなわち、新規端末装置N'1は、図33に示すように、放送局1を親端末A'とすると共に、既存端末装置A'1を子端末A'として再接続することにより階層構造を再構築する。
ここで新規端末装置N'1の制御部213は、親端末A'として放送局1と接続すると、配信能力の比較を終了する。
また、新規端末装置N'1の制御部213は、比較手段として機能して行った比較の結果、親端末A'の配信能力が自身の配信能力よりも高いと判断した場合にも、比較手段による比較を終了する。
このように新規端末装置N'1は、自立的に親端末A'と配信能力の比較を行いながら、階層構造において、自身よりも配信能力の低い既存端末装置A'よりも高い階層に移動して再接続するため、新規端末装置N'1の配信能力が比較的高い場合に、その新規端末装置N'1を階層構造の比較的高い階層に接続させることがき、これにより、この新規端末装置N'1の下層側に接続する端末装置A'に対して、コンテンツデータを安定して配信することができる。
しかも、管理サーバ2は、新規端末装置N'1に対して最初に階層構造に接続する接続先候補を指示するだけでよいため、階層構造を再構築する際に管理サーバ2へかかる負担を軽減することができる。
[3.4.2.方法2:端末装置A'の配信可能な枝を子端末A'で埋めながら階層構造に再接続する方法]
図34に示すように、新規端末装置N'1が階層構造の末端に接続している既存端末装置A'11に接続されて所定時間が経過すると、新規端末装置N'1の制御部213は、比較手段として機能して、新規端末装置N'1の配信能力と親端末A'である既存端末装置A'11の配信能力との比較を行う。
ここでは、新規端末装置N'1の配信能力(3)が親端末A'である既存端末装置A'11の配信能力(2)よりも高いため、新規端末装置N'1の制御部213は、再接続手段として機能して、親端末A'である既存端末装置A'11と入れ替わって階層構造に再接続することにより、図35に示すように階層構造を再構築する。
すなわち、新規端末装置N'1は、図35に示すように、既存端末装置A'5を親端末A'とすると共に、既存端末装置A'11を子端末A'として再接続することにより階層構造を再構築する。
次に新規端末装置N'1の制御部213は、親端末A'である既存端末装置A'5に再接続してから所定時間が経過すると、比較手段として機能して、自身の配信能力と、親端末A'である既存端末装置A'5の配信能力との比較を行う。
ここでは、新規端末装置N'1の配信能力(3)が親端末A'である既存端末装置A'5の配信能力(2)よりも高いため、新規端末装置N'1の制御部213は、再接続手段として機能して、親端末A'である既存端末装置A'5と入れ替わって階層構造に再接続することにより、図36に示すように階層構造を再構築する。
ここで新規端末装置N'1は、子端末A'である既存端末装置A'11との接続を維持した状態で、親端末A'となる既存端末装置A'2に接続するが、このとき、既存端末装置A'10を子端末A'として接続している既存端末装置A'5を新規端末装置N'1の子端末A'として接続することにより、新規端末装置N'1の余っている枝を1つ埋める。
次に新規端末装置N'1の制御部213は、親端末A'である既存端末装置A'2に再接続してから所定時間が経過すると、比較手段として機能して、自身の配信能力と、親端末A'である既存端末装置A'2の配信能力との比較を行う。
ここでは、新規端末装置N'1の配信能力(3)が親端末A'である既存端末装置A'2の配信能力(2)よりも高いため、新規端末装置N'1の制御部213は、再接続手段として機能して、親端末A'である既存端末装置A'2と入れ替わって階層構造に再接続することにより、図37に示すように階層構造を再構築する。
ここで新規端末装置N'1は、子端末A'である既存端末装置A'11、及び、既存端末装置A'10が子端末A'として接続されている既存端末装置A'5との接続を維持した状態で、親端末A'となる既存端末装置A'1に接続するが、このとき、既存端末装置A'4を子端末A'として接続している既存端末装置A'2を、新規端末装置N'1の子端末A'として接続することにより、新規端末装置N'1の余っている枝を1つ埋める。
次に新規端末装置N'1の制御部213は、親端末A'である既存端末装置A'1に再接続してから所定時間が経過すると、比較手段として機能して、自身の配信能力と、親端末A'である既存端末装置A'1の配信能力との比較を行う。
ここでは、新規端末装置N'1の配信能力(3)が親端末A'である既存端末装置A'1の配信能力(2)よりも高いため、新規端末装置N'1の制御部213は、再接続手段として機能して、親端末A'である既存端末装置A'1と入れ替わって階層構造に再接続することにより、図38に示すように階層構造を再構築する。
ここで新規端末装置N'1は、親端末A'であるA'1と入れ替わり、親端末A'となる放送局1に接続するが、このとき、新規端末装置N'1の子端末A'となってからの時間が最も長い既存端末装置A'11を枝から切り離し、その枝に新たな子端末A'として既存端末装置A'1を接続すると、この既存端末装置A'1は、新規端末装置N'1と入れ替わる前に、この新規端末装置N'1を接続していた枝が1つ余った状態となる。
そこで、この余った枝に新規端末装置N'1から切り離された既存端末装置A'11を接続する。
このように新規端末装置N'1は、自立的に親端末A'と配信能力の比較を行いながら、階層構造において、自身よりも配信能力の低い既存端末装置A'よりも高い階層に移動して再接続するため、新規端末装置N'1の配信能力が比較的高い場合に、その新規端末装置N'1を階層構造の比較的高い階層に接続させることがき、これにより、この新規端末装置N'1の下層側に接続する端末装置A'に対して、コンテンツデータを安定して配信することができる。
しかも、管理サーバ2は、新規端末装置N'1に対して最初に階層構造に接続する接続先候補を指示するだけでよいため、階層構造を再構築する際に管理サーバ2へかかる負担を軽減することができる。
そのうえ、新規端末装置N'1の枝が全て埋まった後、この新規端末装置N'1を階層構造のさらに上層へ移動させて再接続する場合には、新規端末装置N'1の子端末A'として接続してからの時間が最も長い子端末A'を枝から切断して、新たに新規端末装置N'1の子端末A'となった既存端末装置A'の下層側に子端末A'として接続させるようにしているため、階層構造が深くなることを防止することができる。
すなわち、新規端末装置N'1の子端末A'として接続してからの時間が最も長い既存端末装置A'は、階層構造の末端近傍の階層で新規端末装置N'1に接続したものであるため、接続しているツリーの階層数が少ないので、この既存端末装置A'を新たに新規端末装置N'1の子端末A'となった既存端末装置A'の下層側に子端末A'として接続させたとしても、階層構造全体としての階層数が増大することがない。
[3.5.端末装置側の判断により階層構造を再構築する際の端末装置動作プログラムについて]
端末装置A'の制御部213は、図39〜図49に示すフローチャートに従って制御を行う。なお、以下の説明では、端末装置A'の制御部213を単に制御部213と呼び、この端末装置A'を操作するクライアントをユーザと呼ぶこととする。
[3.5.1.制御部213のメイン処理]
図39に示すように、メイン処理において制御部213は、端末装置A'に電源が投入されている状態でユーザが端末装置A'に所定の操作を行うと、その操作に基づいて、接続先紹介要求送信手段として機能して、後述するツリー(チャネル)への参加依頼処理(ステップS59)を行い、その後、処理をステップS60へ移す。
ステップS60において制御部213は、接続先候補受信手段として機能して、管理サーバ2から親端末A'の紹介パケットを受信したか否かの判断を行い、親端末A'の紹介パケットを受信したと判断した場合に処理をステップS61に移し、親端末A'の紹介パケットを受信していないと判断した場合に処理をステップS62へ移す。
ステップS61において制御部213は、接続手段として機能して、後述する親端末A'への接続処理(ステップS61)を行い、その後、処理をステップS79へ移す。
ステップS79において制御部213は、後述する配信能力問い合わせ処理を行い、その後、処理をステップS80へ移す。
ステップS80において制御部213は、ユーザにより端末装置A'の停止ボタン(図示略)が押されたか否かの判断を行い、停止ボタンが押されていないと判断した場合に処理をステップS60へ戻し、停止ボタンが押されたと判断した場合に処理をステップS81へ移す。
ステップS81において制御部213は、後述するツリー(チャネル)からの脱退処理を行い、その後、ディスプレイ209上にチャネル選択画面を表示させる処理を行って(ステップS82)、このメイン処理を終了する。
また、ステップS62において制御部213は、子端末A'からの配信能力の問い合わせパケットを受信したか否かの判断を行い、配信能力の問い合わせパケットを受信したと判断した場合に処理をステップS63に移し、配信能力の問い合わせパケットを受信していないと判断した場合に処理をステップS64へ移す。
ステップS63において制御部213は、後述する配信能力の応答処理を行い、その後、処理をステップS79に戻す。
ステップS64において制御部213は、配信能力取得手段として機能して、親端末A'から配信能力の応答パケットを受信したか否かの判断を行い、配信能力の応答パケットを受信したと判断した場合に処理をステップS65へ移し、配信能力の応答パケットを受信していないと判断した場合に処理をステップS68へ移す。
ステップS65において制御部213は、比較手段として機能して、後述する配信能力の比較処理を行い、その後、処理をステップS66に移す。
ステップS66において制御部213は、返り値がTであるか否かの判断を行う。ここでいう返り値とは、配信能力の比較処理の結果を示すものであり、配信能力の比較処理を行う度に、ハードディスク装置203内部の所定領域内で更新されるものである。
この返り値がTであった場合に制御部213は、自身の配信能力が親端末A'の配信能力よりも高いと判断して、後述する親端末A'への接続処理(ステップS67)を行った後、処理をステップS79へ戻す。
一方、帰り値がTでなかった場合に制御部213は、自身の配信能力が親端末A'の配信能力よりも低いと判断して、処理をステップS79へ戻す。
ステップS68において制御部213は、第1の記憶部202のバッファ領域にコンテンツデータであるデータパケットが存在しているか否かの判断を行い、データパケットが存在していないと判断した場合には、処理をステップS70へ移し、データパケットが存在していると判断した場合に、後述する再生処理(ステップS69)を行い、その後、処理をステップ79へ戻す。
ステップS70において制御部213は、子端末A'からの階層を入れ替え要求である階層入れ替えパケットを受信したか否かの判断を行い、階層入れ替えパケットを受信していないと判断した場合に処理をステップS72へ移し、階層入れ替えパケットを受信したと判断した場合に、後述する親端末A'への接続処理(ステップS71)を行った後、処理をステップS79へ移す。
ステップS72において制御部213は、中継依頼受信手段として機能して、他の端末装置A'からコンテンツデータの配信要求があるか否かの判断を行い、配信要求がないと判断した場合には処理をステップS74へ移し、配信要求があると判断した場合には、転送手段として機能して、後述する子端末A'へデータ配信処理(ステップS73)を行い、その後、処理をステップS79へ戻す。
ステップS74において制御部213は、他の端末装置A'からのコンテンツデータ配信停止要求であるデータ配信停止パケットを受信したか否かの判断を行い、データ配信停止パケットを受信していないと判断した場合に処理をステップS76へ移し、データ配信停止パケットを受信したと判断した場合には、後述する配信停止処理(ステップS75)を行い、その後、処理をステップS79へ戻す。
ステップS76において制御部213は、親端末A'がツリーから脱退したことを示す親端末A'の脱退パケットを受信したか否かの判断を行い、親端末A'の脱退パケットを受信していないと判断した場合に処理をステップS78へ移し、親端末A'の脱退パケットを受信したと判断した場合に、接続先紹介要求送信手段として機能して、後述するツリー(チャネル)への参加依頼処理(ステップS77)を行い、その後、処理をステップS79へ戻す。
また、ステップS78において制御部213は、ユーザの他の操作に基づいてその他の処理(ステップS78)を行う。
[3.5.2.ツリーへの参加依頼処理]
このツリーへの参加依頼処理は、図39に示すステップS59及びステップS77で行うものである。
図40に示すように、ツリーへの参加依頼処理において制御部213は、接続先紹介要求送信手段として機能して、管理サーバ2へ参加依頼パケットを送信(ステップS98)した後、タイマーを初期化(ステップS99)し、その後、処理をステップS100へ移す。
ステップS100において制御部213は、ステップS99で初期化したタイマーを参照することにより、所定時間が経過したか否かの判断を行い、所定時間が経過したと判断した場合に処理をステップS98へ戻し、所定時間が経過していないと判断した場合に処理をステップS101へ移す。
ステップS101において制御部213は、接続先候補受信手段として機能して、管理サーバ2から親端末A'の紹介パケットを受信したか否かの判断を行い、親端末A'の紹介パケットを受信していないと判断した場合に処理をステップS100へ戻し、親端末A'の紹介パケットを受信したと判断した場合に、このツリーへの参加依頼処理を終了して処理を図38のメインフローへ戻す。
すなわち、制御部213は、ステップS59におけるツリーへの参加依頼処理を終了した場合、処理をステップS60へ移す。
また、制御部213は、ステップS77におけるツリーへの参加依頼処理を終了すると、処理をステップS79へ戻す。
[3.5.3.親端末への接続処理]
この親端末への接続処理は、図39に示すステップS61及びステップS67及びステップS71で行うものである。
図41に示すように、親端末への接続処理において制御部213は、親端末A'と接続しているか否かの判断を行い(ステップS83)、親端末A'と接続していると判断した場合にその親端末A'との接続を切断する処理(ステップS84)を行った後、処理をステップS85へ移し、親端末A'と接続していないと判断した場合に処理をステップS85へ移す。
ステップS85において制御部213は、接続先紹介要求送信手段として機能して、新しい親端末A'へデータ配信依頼パケットを送信し、その後、再接続手段として機能して、データ配信依頼パケットを送信した新たな親端末A'に接続した後、タイマーを初期化し(ステップS86)、処理をステップS87へ移す。
ステップS87において制御部213は、ステップS86で初期化したタイマーを参照することによって所定時間が経過したか否かの判断を行い、所定時間が経過したと判断した場合に処理をステップS85へ移し、所定時間が経過していないと判断した場合に処理をステップS88へ移す。
ステップS88において制御部213は、接続している親端末A'から配信OKパケットを受信したか否かの判断を行い、配信OKパケットを受信していないと判断した場合に処理をステップS87へ戻し、配信OKパケットを受信したと判断した場合に、この親端末A'へのデータ接続処理を終了して処理を図38のステップS79へ戻す。
[3.5.4.配信能力の問い合わせ処理]
この配信能力の問い合わせ処理は、図39に示すステップS79で行うものである。
図42に示すように、配信能力の問い合わせ処理において制御部213は、現在接続している親端末A'が放送局1であるか否かの判断を行い(ステップS106)、親端末A'が放送局1でないと判断した場合に処理をステップS107へ移し、親端末A'が放送局1であると判断した場合に、この配信能力の問い合わせ処理を終了して処理をステップS80へ移す。
ステップS107において制御部213は、タイマーを参照することによって、親端末A'に接続してから所定時間が経過したか否かの判断を行い、所定時間が経過したと判断した場合に処理をステップS108へ移し、所定時間が経過していないと判断した場合に、この配信能力問い合わせ処理を終了して処理をステップS80へ移す。
ステップS108において制御部213は、現在親端末A'に対して配信能力を問い合わせる処理を行っているか否かの判断を行い、配信能力を問い合わせる処理を行っていないと判断した場合に処理をステップS109へ移し、配信能力を問い合わせ処理を行っていると判断した場合に、この配信能力の問い合わせ処理を終了して処理をステップS80へ移す。
ステップS109において制御部213は、親端末A'の配信能力を問い合わせる処理を行い、その後、この配信能力の問い合わせ処理を終了して処理をステップS80へ移す。
[3.5.5.ツリーからの脱退処理]
このツリーからの脱退処理は、図39に示すステップ81で行うものである。
図43に示すように、ツリーからの脱退処理において制御部213は、ツリーから脱退することを示すパケットを管理サーバ2へ送信することにより、ツリーから脱退することを管理サーバ2に通知し(ステップS102)、その後、処理をステップS103へ移す。
ステップS103において、制御部213は、親端末A'に配信停止パケットを送信し、その後、処理をステップS104へ移す。
ステップS104において、制御部213は、子端末A'が存在するか否かの判断を行う。すなわち、制御部213は、現在子端末A'と接続しているか否かの判断をおこない、子端末A'と接続していないと判断した場合に、このツリーからの脱退処理を終了して処理をステップS82へ戻す。
一方、子端末A'と接続していると判断した場合に制御部213は、子端末A'に対して、親端末A'である自身がツリーから脱退することを示すパケットを送信し(ステップS105)、その後、このツリーからの脱退処理を終了して処理をステップS82へ戻す。
[3.5.6.信能力の応答処理]
この配信能力の応答処理は、図39に示すステップS63で行うものである。
図44に示すように、配信能力の応答処理において制御部213は、自身の配信能力を、配信応力の問い合わせ先である子端末A'に送信する処理(ステップS93)を行い、その後、この配信能力の応答処理を終了して処理をステップS79へ戻す。
[3.5.7.配信能力の比較処理]
この配信能力の比較処理は、図39に示すステップS65で行うものである。
この配信能力の比較処理において制御部213は比較手段として機能して、上記した方法1(親端末A'と入れ替わって階層構造に再接続していく方法)の場合と、方法2(端末装置A'の配信可能な枝を子端末A'で埋めながら階層構造に再接続する方法)の場合とで異なる処理を行うこととなる。
方法1の場合、図45に示すように、制御部213は、比較手段として機能して、親端末A'の配信能力と自分の配信能力とを比較する処理を行い(ステップS110)、処理をステップS111へ移す。
ステップS111において制御部213は、ステップS110の比較処理の結果、親端末A'の配信能力よりも自分の配信能力の方が高いか否かの判断を行い、自分の配信能力の方が高いと判断した場合に処理をステップS112へ移し、親端末A'の配信能力の方が高いと判断した場合に、ハードディスク装置203内部の所定領域に返り値としてFを記憶させ、その後、この配信能力の比較処理を終了して処理を図39のステップS66へ移す。
ステップS112において制御部213は、親端末A'へ階層入れ替えパケットを送信し、その後、処理をステップS113へ移す。
ここで親端末A'へ送信する階層入れ替えパケットには、次の親端末A'となる端末装置A'のIPアドレスとポート番号が含まれている。
ここでは、次の親端末A'となるのは自分自身なので、このときの階層入れ替えパケットには自分のIPアドレスとポート番号が含まれていることとなる。そして、この階層入れ替えパケットを受信した親端末A'は、現在データ配信を受けている親端末A'(親の親)のIPアドレスとポート番号を、階層入れ替えパケットを送信してきた端末装置A'へ返す。
また、入れ替えを行うタイミングとしては、親端末A’が自分の子端末A’となってから入れ替えるようにする。すなわち、親の親端末A’に配信能力の余裕を作ってから入れ替えを行うようにする。
ステップS113において制御部213は、子端末A'が存在しているか否かの判断を行い、ここで子端末A'が存在すると判断した場合には、処理をステップS114へ移し、子端末A'が存在しないと判断した場合に処理をステップS115へ移す。
ステップS114において制御部213は、子端末A'へ階層入れ替えパケットを送信し、その後、処理をステップS115へ移す。
ここで子端末A‘へ送信する階層入れ替えパケットには、親端末A'が変わるため、新しい親端末A'のIPアドレスとポート番号が含まれている。
ステップS115において制御部213は、新たな親端末A'及び新たな子端末A'と接続したことによるトポロジーの変更を管理サーバ2へ送信した後、ハードディスク装置203内部の所定領域に返り値としてTを記憶させ、その後、この配信能力の比較処理を終了し、処理を図39のステップS66へ移す。
方法2の場合、図46に示すように、配信能力の比較処理において制御部213は、
比較手段として機能して、親端末A'の配信能力と自分の配信能力とを比較する処理を行い(ステップS129)、処理をステップS130へ移す。
ステップS130において制御部213は、ステップS129の比較処理の結果、親端末A'の配信能力よりも自分の配信能力の方が高いか否かの判断を行い、自分の配信能力の方が高いと判断した場合に処理をステップS131へ移し、親端末A'の配信能力の方が高いと判断した場合に、ハードディスク装置203内部の所定領域に返り値としてFを記憶させ、その後、この配信能力の比較処理を終了して処理を図39のステップS66へ移す。
ステップS131において制御部213は、親端末A'へ階層入れ替えパケットを送信し、その後、処理をステップS132へ移す。
ここで親端末A‘へ送信する階層入れ替えパケットには、新しい親端末A'のIPアドレスとポート番号が含まれている。
ステップS132において制御部213は、判断手段として機能して、配信能力に余裕があるか否かの判断を行い、配信能力に余裕があると判断した場合に処理をステップS134へ移し、配信能力に余裕がないと判断した場合に処理をステップS133へ移す。
ステップS133において制御部213は、子端末A'となってからの時間が最も長い端末装置A'へ移動指示を行い、その後、処理をステップS134へ移す。
ここでの移動指示には、次の親端末A'となる端末装置A'のIPアドレスとポート番号とをデータとして入れるようにしている。
ステップS134において制御部213は、新たな親端末A'及び新たな子端末A'と接続したことによるトポロジーの変更を管理サーバ2へ送信した後、ハードディスク装置203内部の所定領域に返り値としてTを記憶させ、その後、この配信能力の比較処理を終了し、処理を図39のステップS66へ移す。
[3.5.8.再生処理]
この再生処理は、図39に示すステップS69で行うものである。
図47に示すように、再生処理において制御部213は、再生手段として機能して、コンテンツデータを再生する処理(ステップS95)を行い、子端末A'が存在しているか否かの判断を行い(ステップS96)、ここで子端末A'が存在すると判断した場合には、転送手段として機能して、子端末A'へコンテンツデータを転送する処理を行い(ステップS97)、子端末A'が存在していないと判断した場合には、この再生処理を終了して処理を図39のステップS79へ戻す。
[3.5.9.子端末へのデータ配信処理]
この子端末へのデータ配信処理は、図39に示すステップ73で行うものである。
図48に示すように、子端末A'へのデータ配信処理において制御部213は、自身の配信能力に余裕があるか否かの判断を行う(ステップS89)。
すなわち、制御部213は、判断手段として機能して、子端末A'に接続してコンテンツデータを配信可能な状態であるか否かの判断を行い、子端末A'に接続してコンテンツデータを配信可能な状態であると判断した場合に処理をステップS90へ移し、子端末A'に接続してコンテンツデータを配信可能な状態でないと判断した場合に処理をステップS92へ移す。
ステップS90において制御部213は、現在加速送信中であるか否かの判断を行い、加速送信中でないと判断した場合に処理をステップS91へ移し、加速送信中であると判断した場合に処理をステップS92へ移す。
ステップS91において制御部213は、配信OKパケットを新たな子端末A'へ送信し、ステップS92において制御部213は配信N'Gパケットを新たな子端末A'へ送信し、その後、この子端末A'へデータ配信処理を終了して処理を図38に示すステップS79へ戻す。
[3.5.10.配信停止処理]
この配信停止処理は、図39に示すステップS75で行うものである。
図49に示すように、配信停止処理において制御部213は、転送手段として機能して、子端末A'へのコンテンツデータの転送を停止する処理(ステップS94)を行い、その後、この配信停止処理を終了して処理を図38に示すステップS79へ戻す。
[3.6.端末装置側の判断により階層構造を再構築する際の管理サーバ動作プログラムについて]
管理サーバ2の制御部312は、図50に示すフローチャートに従って制御を行う。なお、以下の説明では、管理サーバの制御部312を単に制御部312と呼ぶこととする。
[3.6.1.管理サーバのメイン処理]
図50に示すように、メイン処理における制御部312は、ツリーへの参加依頼パケットを受信したか否かの判断を行い(ステップS135)、参加依頼パケットを受信したと判断した場合に処理をステップS142へ移し、参加依頼パケットを受信していないと判断した場合に処理をステップS137へ移す。
ステップS142において制御部312は、比較手段として機能して、新規端末装置N'1の配信能力と、既存端末装置A'の配信能力とを比較する処理を行う。
そして、制御部312は接続先候補選択手段として機能して、その比較結果と(3.4.端末装置A'側の判断により階層構造を再構築する方法について)に記載した基準1〜3とに基づいて接続先候補を選択して処理をステップS136へ移す。
ステップS136において制御部312は、図15のフローチャートに示す処理と同様の処理(親端末A'の紹介処理ステップ)を行い、その後処理をステップS135へ戻す。
ステップS137において制御部312は、ツリーからの脱退パケットを受信したか否かの判断を行い、脱退パケットを受信したと判断した場合に処理をステップS138へ移し、脱退パケットを受信していないと判断した場合に処理をステップS139へ移す。
ステップS138において制御部312は、図17のフローチャートに示す処理と同様の処理(ツリーからの脱退処理ステップ)を行い、その後、処理をステップS135へ戻す。
ステップS139において制御部312は、端末装置A'からトポロジーの変更パケットを受信したか否かの判断を行い、トポロジー変更パケットを受信したと判断した場合に処理をステップS140へ移し、トポロジー変更パケットを受信していないと判断した場合にその他の処理(ステップS141)を行い、その後、処理をステップS135へ戻す。
ステップS140において制御部312は、ステップS139で受信したトポロジー変更パケットをハードディスク装置203内部の所定領域に記憶させることにより、所持しているトポロジー情報を更新し、その後、処理をステップS135へ戻す。
上記説明したように、第2実施形態における管理サーバ2の動作を示すフローチャートにおいて、ステップS142の処理は、制御部312が比較手段及び接続先候補選択手段として機能して行うものであり、ステップS136の処理は、制御部312が通知手段として機能して行うものである。
また、端末装置A'の動作を示すフローチャートにおいて、ステップS59、S77、S85、S98の処理は、制御部213が接続先紹介要求送信手段として機能して行うものであり、ステップS60、S101の処理は、制御部213が接続先候補受信手段として機能して行うものであり、ステップS61の処理は、制御部213が接続手段として機能して行うものであり、ステップS95の処理は、制御部213が再生手段として機能して行うものであり、ステップS72の処理は、制御部213が中継依頼受信手段として機能して行うものであり、ステップS73、S94の処理は、制御部213が転送手段として機能して行うものであり、ステップS64の処理は、制御部213が配信能力取得手段として機能して行うものであり、ステップS65、S110、S129の処理は、制御部213が比較手段として機能して行うものであり、ステップS71、S85の処理は、制御部213が再接続手段として機能して行うものである。