(57)【要約】【課題】階層構造をなすネットワークシステムにおいて情報を配信する際に、各ノード装置における情報の再生を途切れさせることなく、そのノード装置が属する階層を入れ替える。【解決手段】ノード装置の情報配信能力は様々な要因により時々刻々と変化するので、その変化する情報配信能力に応じて、ノード装置２が属する階層を動的に入れ替える。この場合、それぞれのノード装置２は、ストリーミング配信されるデータをリアルタイム再生しているから、階層の入替処理に時間がかかると、一部のノード装置２においてはデータの再生が途切れてしまう。そこで、入替対象となるノード装置群に含まれる全てのノード装置２が、十分な量のコンテンツデータをバッファリングしている場合に限って、その入替処理を実行する。この「十分な量のコンテンツデータ」とは、階層の入替処理に要する期間にわたって再生されるコンテンツデータのデータ量のことである。【選択図】図１
2009044661.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して通信を行う通信手段と、
情報を記憶する記憶手段と、
前記ネットワークにおいて自ノード装置が属する階層の上位層から配信されてくる情報を、前記通信手段によって受信すると、当該情報を前記記憶手段にバッファリングしてから当該記憶手段より読み出して再生する再生手段と、
前記記憶手段における情報のバッファリング量を特定する特定手段と、
自ノード装置の情報配信能力を表す指標値を算出する算出手段と、
自ノード装置の上位層又は下位層に属する他ノード装置の前記指標値及び前記バッファリング量を取得する取得手段と、
前記取得手段によって取得された他ノード装置の指標値が、前記算出手段によって算出された自ノード装置の指標値を上回り、且つ、前記取得手段によって取得された他ノード装置のバッファリング量及び前記特定手段によって特定された自ノード装置のバッファリング量がそれぞれ閾値を超えた場合には、自ノード装置が属する階層と、前記他ノード装置が属する階層とを入れ替える処理を行う入替手段と
を備えることを特徴とするノード装置。
【請求項２】
前記算出手段は、
自ノード装置が有するハードウェア資源のうち、情報の配信処理に割り当てられるハードウェア資源の量乃至割合を測定する第１の測定手段と、
自ノード装置が属する階層が入れ替わったときに通信相手となる他ノード装置と、自ノード装置との間の情報転送速度を測定する第２の測定手段と、
前記第１の測定手段による測定結果と、前記第２の測定手段による測定結果とに基づいて、自ノード装置の情報配信能力を表す指標値を計算する計算手段とを有する
ことを特徴とする請求項１記載のノード装置。
【請求項３】
前記算出手段は、自ノード装置においてプログラムが新たに起動させられた場合、又は、自ノード装置において実行されているプログラムが終了した場合に、前記指標値を算出する
ことを特徴とする請求項１記載のノード装置。
【請求項４】
前記算出手段は、自ノード装置の上位層又は下位層に属する他ノード装置から要求があった場合に前記指標値を算出する
ことを特徴とする請求項１記載のノード装置。
【請求項５】
前記算出手段は、所定期間が経過するたびに前記指標値を算出する
ことを特徴とする請求項１記載のノード装置。
【請求項６】
自ノード装置の下位層に属する他ノード装置が複数あり、そのうちいずれか１つの他ノード装置が自ノード装置との階層の入替候補であるときに、
前記取得手段は、
前記階層の入替候補となる他ノード装置の前記指標値及び前記バッファリング量を取得する第１の取得手段と、
自ノード装置の下位層に属する他ノード装置のうち、前記階層の入替候補となる他ノード装置以外の他ノード装置の前記バッファリング量を取得する第２の取得手段とを有し、
前記入替手段は、前記第１の取得手段によって取得された他ノード装置の指標値が、前記算出手段によって算出された自ノード装置の指標値を上回り、且つ、前記第１の取得手段及び前記第２の取得手段によって取得された他ノード装置のバッファリング量及び前記特定手段によって特定された自ノード装置のバッファリング量がそれぞれ閾値を超えた場合には、自ノード装置が属する階層と、前記階層の入替候補となる他ノード装置が属する階層とを入れ替える処理を行う
ことを特徴とする請求項１記載のノード装置。
【請求項７】
自ノード装置の下位層に属する他ノード装置が複数あるときに、
前記取得手段は、自ノード装置の下位層に属する複数の他ノード装置の前記指標値及び前記バッファリング量を取得し、
前記入替手段は、前記取得手段によって取得された複数の他ノード装置の指標値のうち、少なくともいずれか１つが前記算出手段によって算出された自ノード装置の指標値を上回り、且つ、前記取得手段によって取得された他ノード装置のバッファリング量及び前記特定手段によって特定された自ノード装置のバッファリング量がそれぞれ閾値を超えた場合には、自ノード装置が属する階層と、前記取得手段によって取得された複数の指標値のうち最大値の指標値を持つ他ノード装置が属する階層とを入れ替える処理を行う
ことを特徴とする請求項１記載のノード装置。
【請求項８】
前記取得手段は、自ノード装置の階層を含む３つの階層にそれぞれ属する他ノード装置の前記指標値及び前記バッファリング量を取得し、
前記入替手段は、他ノード装置が属する前記３つの階層のいずれかの階層と、自ノード装置が属する階層とを入れ替える処理を行う
ことを特徴とする請求項１記載のノード装置。
【請求項９】
情報を配信する情報配信装置と、
前記情報配信装置の配下に階層的に接続された複数のノード装置とを備え、
前記複数のノード装置の各々が、
通信を行う通信手段と、
情報を記憶する記憶手段と、
自ノード装置が属する階層の上位層から配信されてくる情報を、前記通信手段によって受信すると、当該情報を前記記憶手段にバッファリングしてから当該記憶手段より読み出して再生する再生手段と、
前記記憶手段における情報のバッファリング量を特定する特定手段と、
自ノード装置の情報配信能力を表す指標値を算出する算出手段と、
自ノード装置の上位層又は下位層に属する他ノード装置の前記指標値及び前記バッファリング量を取得する取得手段と、
前記取得手段によって取得された他ノード装置の指標値が、前記算出手段によって算出された自ノード装置の指標値を上回り、且つ、前記取得手段によって取得された他ノード装置のバッファリング量及び前記特定手段によって特定された自ノード装置のバッファリング量がそれぞれ閾値を超えた場合には、自ノード装置が属する階層と、前記他ノード装置が属する階層とを入れ替える処理を行う入替手段と
を備えることを特徴とするネットワークシステム。
【請求項１０】
ネットワークを介して通信を行う通信手段と、情報を記憶する記憶手段とを備えたコンピュータを、
前記ネットワークにおいて自ノード装置が属する階層の上位層から配信されてくる情報を、前記通信手段によって受信すると、当該情報を前記記憶手段にバッファリングしてから当該記憶手段より読み出して再生する再生手段と、
前記記憶手段における情報のバッファリング量を特定する特定手段と、
自ノード装置の情報配信能力を表す指標値を算出する算出手段と、
自ノード装置の上位層又は下位層に属する他ノード装置の前記指標値及び前記バッファリング量を取得する取得手段と、
前記取得手段によって取得された他ノード装置の指標値が、前記算出手段によって算出された自ノード装置の指標値を上回り、且つ、前記取得手段によって取得された他ノード装置のバッファリング量及び前記特定手段によって特定された自ノード装置のバッファリング量がそれぞれ閾値を超えた場合には、自ノード装置が属する階層と、前記他ノード装置が属する階層とを入れ替える処理を行う入替手段と
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、階層構造のネットワークシステムにおいて、各々のノード装置が属する階層を変更する技術に関する。
【背景技術】
【０００２】
複数のノード装置によって構成される階層構造のネットワークにおいて、その最上位層の階層に位置するサーバ装置からストリーミング配信された情報を、下流側のノード装置へと順次転送する仕組みが知られている。上位層にある１つのノード装置の配下には複数のノード装置が接続されているから、上位層のノード装置に対しては、その配下の下位層のノード装置よりも高い情報配信能力が必要とされる。そこで特許文献１には、各ノード装置の情報配信能力に応じてノード装置が属する階層を決定する技術が開示されている。
【特許文献１】特開２００６−３１９４６６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
特許文献１では、ネットワークに新たなノード装置を組み入れるときに、そのノード装置が本来有している情報配信能力に基づいて、所属する階層を決定している。ただし、ノード装置の情報配信能力は例えばネットワークの輻輳などの要因により時々刻々と変化するものであるから、その変化する情報配信能力に応じて、ノード装置が属する階層を動的に入れ替えることが望ましい。ところが、ストリーミング配信の場合、それぞれのノード装置は上位層から送信されている情報を受信すると、それを直ちに再生しているから、階層の入替処理に時間がかかると、一部のノード装置においては再生すべき情報を受信できずに、その再生が途切れてしまうという問題が発生する。
本発明は、上述した背景に鑑みてなされたものであり、階層構造をなすネットワークシステムにおいて情報を配信する際に、各ノード装置における情報の再生を途切れさせることなく、そのノード装置が属する階層を入れ替えることを目的とする。
【課題を解決するための手段】
【０００４】
上記課題を解決するために、本発明は、ネットワークシステムを介して通信を行う通信手段と、情報を記憶する記憶手段と、前記ネットワークにおいて自ノード装置が属する階層の上位層から配信されてくる情報を、前記通信手段によって受信すると、当該情報を前記記憶手段にバッファリングしてから当該記憶手段より読み出して再生する再生手段と、前記記憶手段における情報のバッファリング量を特定する特定手段と、自ノード装置の情報配信能力を表す指標値を算出する算出手段と、自ノード装置の上位層又は下位層に属する他ノード装置の前記指標値及び前記バッファリング量を取得する取得手段と、前記取得手段によって取得された他ノード装置の指標値が、前記算出手段によって算出された自ノード装置の指標値を上回り、且つ、前記取得手段によって取得された他ノード装置のバッファリング量及び前記特定手段によって特定された自ノード装置のバッファリング量がそれぞれ閾値を超えた場合には、自ノード装置が属する階層と、前記他ノード装置が属する階層とを入れ替える処理を行う入替手段とを備えることを特徴とするノード装置を提供する。
本発明によれば、自ノード装置及び他ノード装置のバッファリング量が閾値を超えているかどうかを確認してから階層の入れ替えを行うので、その入れ替えの前後で各ノード装置における情報の再生が途切れることがない。
【０００５】
本発明の好ましい態様において、前記算出手段は、自ノード装置が有するハードウェア資源のうち、情報の配信処理に割り当てられるハードウェア資源の量乃至割合を測定する第１の測定手段と、自ノード装置が属する階層が入れ替わったときに通信相手となる他ノード装置と、自ノード装置との間の情報転送速度を測定する第２の測定手段と、前記第１の測定手段による測定結果と、前記第２の測定手段による測定結果とに基づいて、自ノード装置の情報配信能力を表す指標値を計算する計算手段とを有する。
この態様によれば、情報の配信処理に割り当てられるハードウェア資源の量乃至割合と、自ノード装置が属する階層が入れ替わったときに通信相手となる他ノード装置と自ノード装置との間の情報転送速度とに基づくことで、情報配信能力を表す指標値として、より正確な値を算出することが可能となる。
【０００６】
前記算出手段は、自ノード装置においてプログラムが新たに起動させられた場合、又は、自ノード装置において実行されているプログラムが終了した場合に、前記指標値を算出するようにしてもよいし、前記算出手段は、自ノード装置の上位層又は下位層に属する他ノード装置から要求があった場合に前記指標値を算出するようにしてもよいし、前記算出手段は、所定期間が経過するたびに前記指標値を算出するようにしてもよい。
これにより、適切なタイミングで指標値を算出することが可能となる。
【０００７】
また、本発明の別の好ましい態様においては、自ノード装置の下位層に属する他ノード装置が複数あり、そのうちいずれか１つの他ノード装置が自ノード装置との階層の入替候補であるときに、前記取得手段は、前記階層の入替候補となる他ノード装置の前記指標値及び前記バッファリング量を取得する第１の取得手段と、自ノード装置の下位層に属する他ノード装置のうち、前記階層の入替候補となる他ノード装置以外の他ノード装置の前記バッファリング量を取得する第２の取得手段とを有し、前記入替手段は、前記第１の取得手段によって取得された他ノード装置の指標値が、前記算出手段によって算出された自ノード装置の指標値を上回り、且つ、前記第１の取得手段及び前記第２の取得手段によって取得された他ノード装置のバッファリング量及び前記特定手段によって特定された自ノード装置のバッファリング量がそれぞれ閾値を超えた場合には、自ノード装置が属する階層と、前記階層の入替候補となる他ノード装置が属する階層とを入れ替える処理を行う。
この態様によれば、自ノード装置の下位層に属する他ノード装置が複数ある場合にも、各ノード装置における情報の再生を途切れさせることなく、自ノード装置が属する階層と、階層の入替候補となる他ノード装置が属する階層とを入れ替えることが可能となる。
【０００８】
また、本発明の別の好ましい態様においては、自ノード装置の下位層に属する他ノード装置が複数あるときに、前記取得手段は、自ノード装置の下位層に属する複数の他ノード装置の前記指標値及び前記バッファリング量を取得し、前記入替手段は、前記取得手段によって取得された複数の他ノード装置の指標値のうち、少なくともいずれか１つが前記算出手段によって算出された自ノード装置の指標値を上回り、且つ、前記取得手段によって取得された他ノード装置のバッファリング量及び前記特定手段によって特定された自ノード装置のバッファリング量がそれぞれ閾値を超えた場合には、自ノード装置が属する階層と、前記取得手段によって取得された複数の指標値のうち最大値の指標値を持つ他ノード装置が属する階層とを入れ替える処理を行う。
この態様によれば、自ノード装置の下位層に属する他ノード装置が複数ある場合に、自ノード装置が属する階層と、最も情報配信能力が高い他ノード装置が属する階層とを入れ替えることが可能となる。
【０００９】
また、本発明の別の好ましい態様において、前記取得手段は、自ノード装置の階層を含む３つの階層にそれぞれ属する他ノード装置の前記指標値及び前記バッファリング量を取得し、前記入替手段は、他ノード装置が属する前記３つの階層のいずれかの階層と、自ノード装置が属する階層とを入れ替える処理を行う。
この態様によれば、自ノード装置の階層を含む３つの階層にわたって階層の入れ替えを行うことが可能となる。
【００１０】
また、本発明は、情報を配信する情報配信装置と、前記情報配信装置の配下に階層的に接続された複数のノード装置とを備え、前記複数のノード装置の各々が、通信を行う通信手段と、情報を記憶する記憶手段と、自ノード装置が属する階層の上位層から配信されてくる情報を、前記通信手段によって受信すると、当該情報を前記記憶手段にバッファリングしてから当該記憶手段より読み出して再生する再生手段と、前記記憶手段における情報のバッファリング量を特定する特定手段と、自ノード装置の情報配信能力を表す指標値を算出する算出手段と、自ノード装置の上位層又は下位層に属する他ノード装置の前記指標値及び前記バッファリング量を取得する取得手段と、前記取得手段によって取得された他ノード装置の指標値が、前記算出手段によって算出された自ノード装置の指標値を上回り、且つ、前記取得手段によって取得された他ノード装置のバッファリング量及び前記特定手段によって特定された自ノード装置のバッファリング量がそれぞれ閾値を超えた場合には、自ノード装置が属する階層と、前記他ノード装置が属する階層とを入れ替える処理を行う入替手段とを備えることを特徴とするネットワークシステムを提供する。
本発明によれば、自ノード装置及び他ノード装置のバッファリング量が閾値を超えているかどうかを確認してから階層の入れ替えを行うので、その入れ替えの前後で各ノード装置における情報の再生が途切れることがない。
【００１１】
また、本発明は、ネットワークを介して通信を行う通信手段と、情報を記憶する記憶手段とを備えたコンピュータを、前記ネットワークにおいて自ノード装置が属する階層の上位層から配信されてくる情報を、前記通信手段によって受信すると、当該情報を前記記憶手段にバッファリングしてから当該記憶手段より読み出して再生する再生手段と、前記記憶手段における情報のバッファリング量を特定する特定手段と、自ノード装置の情報配信能力を表す指標値を算出する算出手段と、自ノード装置の上位層又は下位層に属する他ノード装置の前記指標値及び前記バッファリング量を取得する取得手段と、前記取得手段によって取得された他ノード装置の指標値が、前記算出手段によって算出された自ノード装置の指標値を上回り、且つ、前記取得手段によって取得された他ノード装置のバッファリング量及び前記特定手段によって特定された自ノード装置のバッファリング量がそれぞれ閾値を超えた場合には、自ノード装置が属する階層と、前記他ノード装置が属する階層とを入れ替える処理を行う入替手段として機能させるためのプログラムを提供する。
本発明によれば、自ノード装置及び他ノード装置のバッファリング量が閾値を超えているかどうかを確認してから階層の入れ替えを行うので、その入れ替えの前後で各ノード装置における情報の再生が途切れることがない。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の最良の実施形態を説明する。
［構成］
図１は、本実施形態に係るネットワークシステム１００の構成を示すブロック図である。
このネットワークシステム１００は、自身が格納しているコンテンツデータをネットワーク経由で配信する情報配信装置としてのサーバ装置１と、そのサーバ装置１から配信されたコンテンツデータを再生する複数のノード装置２ａ、２ｂ、２ｃ、・・・、２ｘとを備えている。図１に示すように、サーバ装置１の配下に複数のノード装置２ａ、２ｂ、２ｃ、・・・、２ｘが階層的に接続されることで、ネットワーク全体で複数階層のツリー構造を成している。サーバ装置１が配信するコンテンツデータは、音声や画像などのように、再生の対象となる情報であればどのようなものでもよく、ここでは、音声情報付きの動画像情報をコンテンツデータとして用いる。サーバ装置１及び各ノード装置２ａ〜２ｘには、それぞれ固有の装置ＩＤ及びＩＰ（Internet Protocol）アドレスが割り当てられている。サーバ装置１及びノード装置２ａ〜２ｘはその全てが通信線によって相互に接続されているが、図１では、サーバ装置１及び各ノード装置２ａ〜２ｘをＩＰアドレスに基づいて論理的に接続した場合の通信経路３のみを図示している。なお、以下の説明では、ノード装置２ａ〜２ｘのうち、いずれかのノード装置を示す場合には、「ノード装置２」という場合がある。
【００１３】
図１の例では、ノード装置２ａ〜２ｘが属する階層は３階層であり、サーバ装置１の階層まで入れると全部で４階層である。サーバ装置１が属する階層を第０階層とすると、そのサーバ装置１の１つ下の階層に属するノード装置２は、「第１階層のノード装置」である。また、その第１階層のノード装置２の１つ下の階層に属するノード装置２は、「第２階層のノード装置」である。同様に、第２階層のノード装置２の１つ下の階層に属するノード装置２は、「第３階層のノード装置」である。サーバ装置１により配信されるコンテンツデータは、より上位の階層に属するノード装置２から、より下位の階層に属するノード装置２へと、順次、転送される。例えばノード装置２ａは、サーバ装置１から配信されているコンテンツデータを、自身の配下にあるノード装置２ｃ，２ｄに転送する。そして、これを受信したノード装置２ｃは、自身の配下にあるノード装置２g，２ｈ，２ｉに転送する。このように、ネットワークシステム１００においては、サーバ装置１によって配信されたコンテンツデータが、少なくともの１以上のノード装置２を経由して最下位層のノード装置まで、順次、転送されるようになっている。なお、或る装置に通信経路３を介して直接接続された下位層の装置のことを、以下では、“或る装置の配下にある装置”と表現する。例えば、サーバ装置１の配下にある装置は、ノード装置２ａ，２ｂである。また、ノード装置２ａの配下にある装置は、ノード装置２ｃ，２ｄである。
【００１４】
全てのノード装置２ａ〜２ｘはそれぞれ、上位層から配信されてくるコンテンツデータを自身のバッファメモリに一時的に記憶しつつ（つまりバッファリングしつつ）、再生タイミングに合わせてそのコンテンツデータをバッファメモリから順次読み出して再生する。このような再生形式を、リアルタイム再生という。一方、最下位層にある第３階層のノード装置２以外のノード装置２、つまり第１階層及び第２階層のノード装置２はそれぞれ、上記再生処理と並行して、バッファメモリから読み出したコンテンツデータを、自身の配下にあるノード装置２へと転送する。
【００１５】
ノード装置２ａ〜２ｘは、ピアツーピア方式のネットワークを構成しており、各ノード装置が属する階層は自由に変更し得るようになっている。上位層に属するノード装置２は複数のノード装置２を配下に持つことが多いため、上位層に属するノード装置２に対しては、その配下にあるノード装置２よりも高い情報配信能力が必要とされる。そこで、各ノード装置２の情報配信能力に応じて各々のノード装置２が属する階層を決める。ただし、ノード装置２の情報配信能力は様々な要因により時々刻々と変化するものであるから、その変化する情報配信能力に応じて、ノード装置２が属する階層を動的に入れ替える。この場合、それぞれのノード装置２は、ストリーミング配信されるデータをリアルタイム再生しているから、階層の入替処理に時間がかかると、一部のノード装置２においてはデータの再生が途切れてしまう。
【００１６】
そこで、入替対象となるノード装置群（以下、入替対象ノード装置群という）に含まれる全てのノード装置２が、十分な量のコンテンツデータをバッファリングしている場合に限って、その入替処理を実行する。この「十分な量のコンテンツデータ」とは、階層の入替処理に要する期間にわたって再生されるコンテンツデータのデータ量のことであり、実験或いは計算により予め決められている。例えば、コンテンツデータの再生速度が３０００（ｋbit／sec）で、階層の入れ替えに要する時間がおおよそ２．５（sec）だとした場合、上記の「十分な量」とは少なくとも、３０００（ｋbit／sec）×２．５（sec）＝７５００（kbit）以上の値となる。各ノード装置２にはこの値が閾値として予め記憶されている。
【００１７】
図２は、入替対象ノード装置群を例示する図である。
この入替対象ノード装置群には、入替対象の候補となる上位層のノード装置２及び下位層のノード装置２が含まれるほか、さらに、その上位層のノード装置２の配下のノード装置２であって、入替対象の候補となるノード装置２以外のノード装置２が含まれる。図２において、入替対象ノード装置群Ｇ１には、入替対象の候補となる上位層のノード装置２ａ及び下位層のノード装置２（例えばノード装置２ｃ）のほか、その上位層のノード装置２ａの配下のノード装置２であって、入替対象の候補となるノード装置２ｃ以外のノード装置２ｄが含まれている。また、入替対象ノード装置群Ｇ２には、入替対象の候補となる上位層のノード装置２ｃ及び下位層のノード装置２（例えばノード装置２ｇ）のほか、その上位層のノード装置２ｃの配下のノード装置２であって、入替対象となるノード装置２ｇ以外のノード装置２ｈ，２ｉが含まれている。
【００１８】
図３は、ノード装置２の構成を示すブロック図である。
図３に示すように、ノード装置２は、制御部１１と、記憶部１２と、バッファメモリ１３と、デコーダ部１４と、画像処理部１５と、表示部１６と、音声処理部１７と、スピーカ１８と、通信部１９と、操作部２０とを備えている。これらはバス２１を介して相互に接続されている。制御部１１は、ＣＰＵと、ＲＡＭ（Random Access Memory）と、ＲＯＭ（Read Only Memory）とを備えている。ＲＡＭには、ＣＰＵが実行するプログラムやその実行に要するデータが展開される。また、このＲＡＭには、自ノード装置を含む入替対象ノード装置群の各ノード装置２のＩＰアドレスが記憶されている。図２の例で言えば、ノード装置２ｃのＲＡＭには、入替対象ノード装置群Ｇ１の各ノード装置２ａ，２ｄのＩＰアドレスが記憶されているとともに、入替対象ノード装置群Ｇ２の各ノード装置２ｇ，２ｈ，２ｉのＩＰアドレスが記憶されている。これらのＩＰアドレスは、入替対象ノード装置群が新たに形成されたり、その入替対象ノード装置群に所属するノード装置２が変更された場合に、更新される。
【００１９】
記憶部１２は、例えばハードディスクであり、前述した“十分な量のコンテンツデータ”の閾値や、各種のプログラムを記憶している。このプログラムには、コンテンツデータの配信及び再生に関する処理の手順が記述された配信プログラムのほか、ノード装置２のユーザがこのノード装置２にインストールした任意のプログラムが含まれる。例えば、ユーザのスケジュール管理を行うスケジューラプログラムや、文書作成を行うための文書作成プログラムなどである。バッファメモリ１３は、通信部１９が上位層の装置から受信したコンテンツデータを、その再生タイミングまで一時的に記憶する。再生時にバッファメモリ１３から読み出されたコンテンツデータは、そのバッファメモリ１３から消去される。
【００２０】
デコーダ部１４は、コンテンツデータ中のエンコードされたビデオデータ（画像情報）及びオーディオデータ（音声情報）をデコードする。画像処理部１５は、デコードされたビデオデータに対して画像処理を施し、ビデオ信号として出力する。表示部１６は、例えば液晶ディスプレイであり、画像処理部１５から出力されたビデオ信号に基づき画像を表示する。音声処理部１７は、デコードされたオーディオデータをアナログオーディオ信号へとＤ／Ａ変換し、これに音声処理を施して出力する。スピーカ１８は、音声処理部１７から出力されたオーディオ信号の強度に応じて放音する。通信部１９は、通信経路３を介して他のノード装置２やサーバ装置１と通信を行なう。操作部２０は、例えばマウスやキーボードであり、ユーザの操作を受け付け、当該操作に応じた操作信号を制御部１１に供給する。
【００２１】
［動作］
次に、ネットワークシステム１００の動作を説明する。
図４は、ノード装置２の制御部１１が実行するメインルーチンを表すフローチャートである。制御部１１は、ユーザの操作に応じて配信プログラムを起動すると、この図４に示した処理を開始する。まず、制御部１１は、自ノード装置の情報配信能力の指標値である配信能力値を算出する時期が到来したか否かを判定する（ステップＳＡ１）。
【００２２】
ここで、配信能力値の算出時期の条件には、４通りの条件がある。
まず１つ目の条件は、制御部１１のＣＰＵが実行中のプログラムのうち、配信プログラム以外のプログラムが終了したことである。例えばＣＰＵが、配信プログラムと並列して、スケジューラプログラムや文書作成プログラムなどを実行していることがある。このうち、例えばスケジューラプログラムが終了した場合、そのスケジューラプログラムの実行に要していたハードウェア資源、例えばＣＰＵの演算能力やＲＡＭの記憶領域が余ることになる。これらの余剰能力は、配信プログラムの実行処理に新たに投入することが可能となる。このため、それまでは下位層のノード装置２であったとしても、配信プログラムに投入できる情報配信能力が上位層のノード装置２のそれを上回ることで、その上位層のノード装置２に代わって自らが上位層のノード装置２になり得る可能性がある。そこで、ＣＰＵが実行中のプログラムが終了した場合を、配信能力値の算出時期の条件としている。ただし、この条件は、下位層のノード装置２が上位層のノード装置２に入れ替わる場合の条件である。よって、自身が属している階層よりも上位層の階層に入れ替わることがないノード装置２、つまり第１階層のノード装置２は、この１つ目の条件に合致したとしても、配信能力値の算出時期が到来したとは判断しない。
【００２３】
次に、２つ目の条件は、制御部１１のＣＰＵが配信プログラムのほかに新たなプログラムを起動したことである。ＣＰＵが配信プログラムのほかに、例えばスケジューラプログラムなどの新たなプログラムを起動した場合、起動したプログラムに対してＣＰＵやＲＡＭなどのハードウェア資源を新たに割り当てる必要があるので、それまでに配信プログラムに充てていたハードウェア資源が逼迫することになる。このため、それまでは上位層のノード装置２であったとしても、配信プログラムに投入できるハードウェア資源が下位層のノード装置２のそれを下回り、そのノード装置２に上位層のノード装置２に代わってもらって、自らが下位層のノード装置２になったほうがよい可能性がある。そこで、ＣＰＵが新たなプログラムが起動した場合を、配信能力値の算出時期の条件としている。ただし、この条件は、上位層のノード装置２から下位層のノード装置２へと入れ替わる場合の条件であるので、自身が属している階層よりも下位層の階層に入れ替わることがないノード装置２、つまり最下位層（第３階層）のノード装置２は、この２つ目の条件に合致したとしても、配信能力値の算出時期が到来したとは判断しない。
【００２４】
次に、３つ目の条件は、ノード装置２が、自身よりも下位層のノード装置２から、階層を入れ替えるかどうかを判定することを要求する入替判定要求を受け取った場合である。この入替判定要求は、下位層のノード装置２が上述した１つ目の条件を満たしたときに、上位層のノード装置２に対して送信するものである。この場合、入替判定要求を受け取ったノード装置２が入替対象の候補になるから、配信能力値の算出時期の条件としている。ただし、この条件は、上位層のノード装置２から下位層のノード装置２へと入れ替わる場合の条件であるので、自身が属している階層よりも下位層の階層に入れ替わることがないノード装置２、つまり最下位層（第３階層）のノード装置２は、この３つ目の条件に合致することはない。
【００２５】
そして、４つ目の条件は、ノード装置２が、自身よりも上位層のノード装置２から、配信能力値を要求する配信能力値要求を受け取った場合である。この配信能力値要求は、上位層のノード装置２が上述した２つ目の条件を満たしたときに、下位層のノード装置２に対して送信するものである。この場合、配信能力値要求を受け取ったノード装置２が入替対象の候補になるから、配信能力値の算出時期の条件としている。ただし、この条件は、下位層のノード装置２から上位層のノード装置２に入れ替わる場合の条件であるので、自身が属している階層よりも上位層の階層に入れ替わることがないノード装置２、つまり第１階層のノード装置２は、この１つ目の条件に合致することはない。
【００２６】
さて、図４のステップＳＡ１において、制御部１１は、配信能力値を算出する時期が到来したと判断すると（ステップＳＡ１；ＹＥＳ）、その到来理由を判定する（ステップＳＡ２）。そして、その理由が、ＣＰＵが実行中のプログラムを終了したことである場合には（ステップＳＡ２；プログラム終了）、制御部１１は、後述する配信能力値算出処理を行う（ステップＳＡ３）。次に、制御部１１は、上位層のノード装置２に対して入替判定要求を送信する（ステップＳＡ４）。そして、制御部１１は、その入替判定要求に応答する許諾応答を上位層のノード装置２から受信すると（ステップＳＡ５；ＹＥＳ）、上位層のノード装置２に対して、ステップＳＡ３にて算出した配信能力値を送信する（ステップＳＡ６）。
【００２７】
また、ステップＳＡ２において、制御部１１は、ＣＰＵが新たなプログラムを起動したことが理由であると判定した場合には（ステップＳＡ２；プログラム起動）、配信能力値算出処理を行う（ステップＳＡ７）。次に、制御部１１は、下位層のノード装置２に対して配信能力値要求を送信し（ステップＳＡ８）、その要求に応じて下位層のノード装置２から送信されてくる配信能力値を受信し、ＲＡＭに記憶する（ステップＳＡ９）。
【００２８】
また、ステップＳＡ２において、制御部１１は、下位層のノード装置２から入替判定要求を受信したことが理由であると判定した場合には（ステップＳＡ２；入替判定要求の受信）、下位層のノード装置２に対し、その入替判定要求を受け入れたことを意味する許諾応答を送信する（ステップＳＡ１０）そして、制御部１１は、その許諾応答に応じて下位層のノード装置２から送信されてくる配信能力値を受信すると（ステップＳＡ１１；ＹＥＳ）、これをＲＡＭに記憶してから、自身の配信能力値算出処理を行う（ステップＳＡ１２）。
【００２９】
また、ステップＳＡ２において、制御部１１は、上位層のノード装置２から配信能力値要求を受信したことが理由であると判定した場合には（ステップＳＡ２；配信能力値要求の受信）、配信能力値算出処理を行い（ステップＳＡ１３）、算出した配信能力値を上位層のノード装置２へ送信する（ステップＳＡ１４）。
制御部１１は、以上のステップＳＡ１〜ＳＡ１４の処理を繰り返し実行する。
【００３０】
次に、図５は、上述した配信能力値算出処理を表すフローチャートである。
図５において、ノード装置２の制御部１１は、まず、ＣＰＵにおける配信プログラム及びアイドリングプロセスの占有率を特定する（ステップＳＢ１）。ここで、“ＣＰＵにおける配信プログラムの占有率”とは、配信プログラムの実行に要するＣＰＵの処理能力がそのＣＰＵの全処理能力に占める割合のことである。また、“ＣＰＵにおけるアイドリングプロセスの占有率”とは、ＣＰＵの全処理能力のうち使用していない処理能力が占める割合のことである。例えば、配信プログラムの実行に要しているＣＰＵの占有率が２０％であり、その他のプログラムの実行に要しているＣＰＵの占有率が３０％である場合、アイドリングプロセスの占有率は１００−２０−３０＝５０％となる。この場合、配信プログラム及びアイドリングプロセスの占有率は２０＋５０＝７０％となる。これは、ＣＰＵの処理能力の７０％を配信プログラムに充当可能、ということを意味している。
【００３１】
次に、制御部１１は、ＲＡＭにおいて、配信プログラム及びアイドリングプロセスに割り当て可能な記憶領域のサイズを算出する（ステップＳＢ２）。例えば、ＲＡＭにおいて配信プログラム及びその実行に使用するデータが記憶されている領域が全体の３５％であり、その他のプログラム及びその実行に使用するデータが記憶されている領域が全体の３０％である場合、アイドリングプロセスの占有率は１００−３５−３０＝３５％となる。この場合、配信プログラム及びアイドリングプロセスに割り当て可能な記憶領域のサイズは、ＲＡＭ全体の３５＋３５＝７０％となる。これは、ＲＡＭの記憶領域の７０％を配信プログラムに充当可能、ということを意味する。
【００３２】
次に、制御部１１は、入替対象ノード装置群に含まれるノード装置２のＩＰアドレス（自ノード装置のＩＰアドレスは除く）をＲＡＭから読み出す（ステップＳＢ３）。このときの読み出し対象となるＩＰアドレスは、自ノード装置が上位層のノード装置２と入れ替えられる場合と、下位層のノード装置２と入れ替えられる場合とで異なる。例えば自ノード装置を図２のノード装置２ｃとすると、自ノード装置が上位層のノード装置２と入れ替えられる場合は、図２の入替対象ノード装置群Ｇ１に含まれるノード装置（ノード装置２ａ）のＩＰアドレスが読み出し対象となる。一方、自ノード装置が下位層のノード装置２と入れ替えられる場合は、図２の入替対象ノード装置群Ｇ２に含まれるノード装置（ノード装置２ｇ，２ｈ，２ｉ）のＩＰアドレスが読み出し対象となる。
【００３３】
次に、制御部１１は、転送速度測定用のパケットをそれらのＩＰアドレスに向けて送信すると共に、その送信時刻を記憶する（ステップＳＢ４）。そして、各ＩＰアドレスが割り当てられた全てのノード装置２から応答パケットを受信すると（ステップＳＢ５；ＹＥＳ）、各々の受信時刻から送信時刻を差し引いて転送所要時間を算出する。制御部１１は、転送速度測定用のパケットの送信先となる全てのノード装置２から応答パケットを受信し、各々の転送所要時間を算出すると、ステップＳＢ１，ＳＢ２，ＳＢ５にて算出した占有率、記憶領域のサイズ及び転送所要時間を、以下の式Ａに代入して、配信能力値を算出する（ステップＳＢ６）。
【００３４】
配信能力値＝ｋ１×ｆ１（α）＋ｋ２×ｆ２（β）＋ｋ３×ｆ３（γ）・・・（Ａ）
ここで、
α＝配信プログラムに充当可能なＣＰＵの占有率×ＣＰＵのクロック数
β＝配信プログラムに充当可能なＲＡＭの記憶領域のサイズ
γ＝入替対象ノード装置群との間の転送所要時間の平均値
ｋ１，ｋ２，ｋ３＝重み係数
である。
【００３５】
上記Ａ式において、ｆ１（α）、ｆ２（β）、ｆ３（γ）はそれぞれ、α、β、γが入力されると、そのα、β、γに応じて、配信能力値として適切な指標値を出力する関数である。最も簡易な関数の例としては、入力されたα、β、γをそのまま出力するような関数が考えられるが、より望ましくは、これらα、β、γから、配信能力値の比較が容易になるように正規化された値が出力されるような関数であるとよい。つまり、ｆ１（α）は、配信プログラムに充当可能なＣＰＵの占有率×ＣＰＵのクロック数を正規化する関数であり、ｆ２（β）は、配信プログラムに充当可能なＲＡＭの記憶領域のサイズを正規化する関数であり、ｆ３（γ）は、入替対象ノード装置群との間の転送所要時間の平均値を正規化する関数であるとよい。これらの正規化関数を用いることにより、制御部１１は、自ノード装置を含む各ノード装置２の配信能力値をより公平に比較することができる。
【００３６】
そして、制御部１１は算出した配信能力値をＲＡＭに記憶する。そして、自ノード装置が、入替対象ノード装置群のうち下位層のノード装置２である場合には、制御部１１は、上位層のノード装置２に対して、配信能力値を送信する。
【００３７】
次に、図６は、ノード装置２の制御部１１が実行する入替判定処理を表すフローチャートである。
この入替判定処理は、入替対象ノード装置群のうちの上位層のノード装置２が実行する処理である。図６において、ノード装置２の制御部１１は、自身が算出した“自ノード装置の配信能力値”と、下位層のノード装置２から取得した“他ノード装置の配信能力値”とを比較する（ステップＳＣ１）。この比較の結果、自ノード装置の配信能力値よりも他ノード装置の配信能力値が上回っている場合には（ステップＳＣ２；ＹＥＳ）、制御部１１は、自身のバッファメモリ１３を参照して、コンテンツデータの書き込みメモリアドレスと読み出しメモリアドレスとの差分から、コンテンツデータのバッファリング量を特定する（ステップＳＣ３）。なお、このとき、下位層の複数のノード装置２から配信能力値を取得した場合には、下位層の複数のノード装置２から取得した配信能力値のうち少なくともいずれか１つが、自ノード装置の指標値を上回ると、ステップＳＣ２の判定結果はＹＥＳとなる。この場合、制御部１１は、自ノード装置の配信能力値を上回り、かつ、それらのうちで最大値となる配信能力値を特定し、その配信能力値を有する他ノード装置を、階層の入替候補となるノード装置２として、以下の処理を実行する。
【００３８】
次に、制御部１１は、入替対象ノード装置群に含まれるノード装置２（自ノード装置は除く）に対してバッファリング量を要求する。その要求を受け取った他ノード装置の制御部１１は、それぞれ自身のバッファメモリ１３を参照し、書き込みメモリアドレスと読み出しメモリアドレスとの差分から、コンテンツデータのバッファリング量を特定する。そして、他ノード装置の制御部１１は、その要求元である上位層のノード装置２に対して、特定したバッファリング量を送信する。
【００３９】
上位層のノード装置２の制御部１１は、入替対象ノード装置群の下位のノード装置２の全てからバッファリング量を受信すると（ステップＳＣ４）、自ノード装置のバッファリング量及び下位層のノード装置２から取得したバッファリング量と、閾値とを比較する（ステップＳＣ５）。そして、制御部１１は、それらのバッファリング量の全てが閾値を超えているか否かを判断する（ステップＳＣ６）。この閾値は、前述のとおり、少なくとも、階層の入替処理に要する期間にわたって再生されるコンテンツデータのデータ量以上の値であり、実験或いは計算により予め決められたものである。
【００４０】
そして、制御部１１は、自装置のバッファリング量及び下位層のノード装置２から取得したバッファリング量の全てが閾値を超えている場合には（ステップＳＣ６；ＹＥＳ）、自ノード装置が属する階層と、入替対象の候補となるノード装置２が属する階層とを入れ替えることを決定する（ステップＳＣ７）。ここでいう「入替対象の候補となるノード装置」とは、入替判定要求を受け取った場合には、その入替判定要求の送信元のノード装置２である。また、下位層の複数のノード装置２から配信能力値を取得した場合には、ステップＳＣ２において特定した、自ノード装置の配信能力値を上回り、かつ、最大値の配信能力値を持つノード装置２のことである。
【００４１】
なお、ステップＳＣ２において、自ノード装置の配信能力値よりも他ノード装置の配信能力値が上回っていない場合には（ステップＳＣ２；ＮＯ）、階層を入れ替える必要がないので、制御部１１の処理は終了する。また、ステップＳＣ６において、自ノード装置のバッファリング量及び下位層のノード装置２から取得したバッファリング量のうちいずれか１つでも閾値を超えていない場合には（ステップＳＣ６；ＮＯ）、その閾値が超えていないノード装置２において、コンテンツデータの再生が途切れる虞があることを意味する。よって、この場合は階層を入れ替えるべきではないということで、制御部１１の処理は終了する。
【００４２】
このようにして階層の入れ替えを決定すると、制御部１１は、自ノード装置と他ノード装置の階層を入れ替えるための処理を行う。具体的には、制御部１１は、入替対象の候補となるノード装置２に対して、自ノード装置の上位層にあるノード装置２又はサーバ装置１のＩＰアドレスを通知する。これにより、入替対象の候補となるノード装置２は、自身が受け取るコンテンツデータの配信元のノード装置２又はサーバ装置１のＩＰアドレスを知ることができる。また、制御部１１は、入替対象の候補となるノード装置２に対して、自ノード装置の配下にあるノード装置２のＩＰアドレスを通知する。これにより、入替対象の候補となるノード装置２は、自身が転送するコンテンツデータの転送先のノード装置２のＩＰアドレスを知ることができる。この後、入替対象の候補となるノード装置２は、コンテンツデータの配信元のノード装置２又はサーバ装置１のＩＰアドレスに基づいて、そのノード装置２又はサーバ装置１と決められた手順でシェイクハンドを行う。これとともに、入替対象の候補となるノード装置２は、転送先のノード装置２のＩＰアドレスに基づいてそれらのノード装置２と決められた手順でシェイクハンドを行う。これ以降、ノード装置２（入替対象の候補であったノード装置２）の制御部１１は、これらのシェイクハンドによって確立した通信路を用いて、コンテンツデータの送受信を行う。つまり、上位層のノード装置として機能するわけである。
【００４３】
次に、図７は、ネットワークシステム１００の一動作例を示すシーケンス図であり、特にサーバ装置１及びノード装置２ａ，２ｃ，２ｄの動作を表したものである。
図７において、サーバ装置１はノード装置２ａにコンテンツデータを送信している（ステップＳＤ１）。ノード装置２ａはそのコンテンツデータを受信すると、それを再生しつつ、ノード装置２ｃ，２ｄに転送している（ステップＳＤ２，ＳＤ３）。ノード装置２ｃ，２ｄは、そのコンテンツデータを受信すると、それを再生しつつ、さらに配下のノード装置に転送している。
【００４４】
ここで、ノード装置２ａにおいて、配信プログラム以外の新たなプログラムが起動された場合（ステップＳＤ４）、ノード装置２ａは、図４で説明したとおり、図５の手順で自身の配信能力値を算出する（ステップＳＤ５）。次に、ノード装置２ａは、配下のノード装置２ｃ，２ｄに対して、配信能力値を要求する配信能力値要求を送信する（ステップＳＤ６，ＳＤ７）。ノード装置２ｃ，２ｄは、この要求に応じて、図５の手順で自身の配信能力値を算出し（ステップＳＤ８，ＳＤ９）、ノード装置２ａに送信する（ステップＳＤ１０，ＳＤ１１）。
【００４５】
ノード装置２ａは、配信能力値を受信すると、図６の手順で入替判定処理を行う（ステップＳＤ１２）。このとき、ノード装置２ａは、ノード装置２ｃ，２ｄに対してバッファリング量を要求する（ステップＳＤ１３，ＳＤ１４）。その要求を受け取ったノード装置２ｃ，２ｄは、それぞれのバッファリング量を特定してノード装置２ａに送信する（ステップＳＤ１５，ＳＤ１６）。ここで、例えばノード装置２ｃ，２ｄの配信能力値がいずれもノード装置２ａの配信能力値を上回り、且つ、ノード装置２ｃの配信能力値がノード装置２ｄの配信能力値よりも大きい場合には、ノード装置２ｃが階層の入替候補となる。よって、ノード装置２ａは、自身が属する階層と、ノード装置２ｃが属する階層とを入れ替えることを決定する。
【００４６】
そして、ノード装置２ａは、入替対象の候補となるノード装置２ｃに対して、サーバ装置１のＩＰアドレスを含む入替通知を送信する（ステップＳＤ１７）。ノード装置２ｃは、これを受信すると、入れ替えを許諾する入替許諾応答をノード装置２ａに送信する（ステップＳＤ１８）。この入替許諾応答には、ノード装置２ｃの配下にあるノード装置２（図１のノード装置２ｇ，２ｈ，２ｉ）のＩＰアドレスが含まれている。また、ノード装置２ａは、自身の上位の装置であるサーバ装置１に対して、ノード装置２ｃのＩＰアドレスを含む転送先変更通知を送信する（ステップＳＤ１９）。サーバ装置１は、これを受信すると、転送先を変更することを許諾する許諾応答をノード装置２ａに送信する（ステップＳＤ２０）。
【００４７】
一方、ノード装置２ｃは、通知されたノード装置２ｄのＩＰアドレスに基づいて、ノード装置２ｄと決められた手順でシェイクハンドを行う（ステップＳＤ２１）。また、ノード装置２ｃは、通知されたサーバ装置１のＩＰアドレスに基づいて、サーバ装置１と決められた手順でシェイクハンドを行う（ステップＳＤ２２）。これ以降、サーバ装置１はノード装置２ｃに対してコンテンツデータを送信する（ステップＳＤ２３）。ノード装置２ｃはそのコンテンツデータを受信すると、それを再生しつつ、ノード装置２ａ，２ｄに転送する（ステップＳＤ２４，ＳＤ２５）。ノード装置２ｄは、そのコンテンツデータを受信すると、それを再生しつつ、それまでと同じように、自身の配下のノード装置に転送する。また、ノード装置２ａは、ノード装置２ｃから受け取った入替許諾応答に含まれていたＩＰアドレスに基づいて、それまではノード装置２ｃの配下にいたノード装置（図１のノード装置２ｇ，２ｈ，２ｉ）とシェイクハンドを行ってから、ノード装置２ｃから受信したコンテンツデータを再生しつつ、それをノード装置２ｇ，２ｈ，２ｉへ転送する。
このようにして、ノード装置２ａが属する階層と、ノード装置２ｃが属する階層とが入れ替えられることになる。
【００４８】
次に、図８は、ネットワークシステム１００の別の動作例を示すシーケンス図であり、特にノード装置２ａ，２ｃ，２ｇ，２ｈ，２ｉの動作を表したものである。
図８において、ノード装置２ａはノード装置２ｃにコンテンツデータを送信している（ステップＳＥ１）。ノード装置２ｃはそのコンテンツデータを受信すると、それを再生しつつ、ノード装置２ｇ，２ｈ，２ｉに転送している（ステップＳＥ２，ＳＥ３，ＳＥ４）。
【００４９】
ここで、ノード装置２ｇにおいて、配信プログラム以外のプログラムが終了した場合（ステップＳＥ５）、ノード装置２ｇは、図４で説明したとおり、図５の手順に従って自身の配信能力値を算出する（ステップＳＥ６）。次に、ノード装置２ｇは、入れ替え判定を要求する入替判定要求をノード装置２ｃに送信する（ステップＳＥ７）。ノード装置２ｃはこれを受信すると、その要求を受け入れる許諾応答をノード装置２ｇに送信する（ステップＳＥ８）。これに応じて、ノード装置２ｇは、算出しておいた配信能力値をノード装置２ｃに送信する（ステップＳＥ９）。一方、ノード装置２ｃも図５の手順に従って自身の配信能力値を算出する（ステップＳＥ１０）。
【００５０】
次に、ノード装置２ｃは、図６の手順に従って入替判定処理を行う（ステップＳＥ１１）。このとき、ノード装置２ｃは、制御部１１は、ノード装置２ｇ，２ｈ，２ｉに対してバッファリング量を要求する（ステップＳＥ１２，ＳＥ１３，ＳＥ１４）。その要求を受け取ったノード装置２ｇ，２ｈ，２ｉは、それぞれのバッファリング量を特定してノード装置２ｃに送信する（ステップＳＥ１５，ＳＥ１６，ＳＥ１７）。ここで、ノード装置２ｃは、入替判定処理の結果、自身が属する階層と、ノード装置２ｇが属する階層とを入れ替えることを決定した場合、入替対象の候補となるノード装置２ｇに対して、ノード装置２ａのＩＰアドレスを含む入替通知を送信する（ステップＳＥ１８）。ノード装置２ｇは、これを受信すると、入れ替えを許諾する入替許諾応答をノード装置２ｃに送信する（ステップＳＥ２０）。また、ノード装置２ｃは、自身の上位の装置であるノード装置２ａに対して、ノード装置２ｇのＩＰアドレスを含む転送先変更通知を送信する（ステップＳＥ１９）。ノード装置２ａは、これを受信すると、転送先を変更することを許諾する許諾応答をノード装置２ｃに送信する（ステップＳＥ２１）。
【００５１】
そして、ノード装置２ｇは、ノード装置２ｈ，２ｉのＩＰアドレスに基づいて、ノード装置２ｈ，２ｉと決められた手順でシェイクハンドを行う（ステップＳＥ２２，ＳＥ２３）。また、ノード装置２ｇは、ノード装置２ａのＩＰアドレスに基づいて、ノード装置２ａと決められた手順でシェイクハンドを行う（ステップＳＥ２４）。これ以降、ノード装置２ａはノード装置２ｇにコンテンツデータを送信する（ステップＳＥ２５）。ノード装置２ｇはそのコンテンツデータを受信すると、それを再生しつつ、ノード装置２ｃ，２ｈ，２ｉに転送する（ステップＳＥ２６，ＳＥ２７，ＳＥ２８）。
このようにして、ノード装置２ｃが属する階層と、ノード装置２ｇが属する階層とが入れ替えられることになる。
【００５２】
以上に説明した実施形態によれば、入替対象となるノード装置群に含まれる全てのノード装置２が、十分な量のコンテンツデータをバッファリングしている場合に限って、階層の入替処理を実行する。よって、各ノード装置２においてコンテンツデータの再生が途切れることがない。このように、ネットワークシステム１００を構成するノード装置２は、情報配信能力に応じた階層の入れ替えを自律的且つ動的に行うことで、情報配信能力が相対的に低いノード装置２がボトルネックになってしまうような事態を防止し、ネットワーク内の配信効率を向上させることができる。
【００５３】
［変形例］
上記実施形態を次のように変形してもよい。
配信能力値の算出時には、自ノード装置が有するハードウェア資源のうち、情報の配信処理に割り当てられるハードウェア資源の割合を測定する以外にも、その割り当て可能なハードウェア資源の量そのものを用いてもよい。つまり、制御部１１は、自ノード装置が有するハードウェア資源のうち、情報の配信処理に割り当てられるハードウェア資源の量乃至割合に基づいて配信能力値を算出すればよい。また、制御部１１は、上述した配信能力値の算出タイミングに限らず、例えば所定期間が経過するたびに配信能力値を算出してもよい。なお、各ノード装置２の配信能力値を算出・比較する方法については、上記の方法以外にも、例えば「Standard Performance Evalution Corporation(SPEC)［http://www.spec.org/］」など、様々な周知技術があるので、それらのうち適切なものを用いればよい。
実施形態では、入替判定処理を、入替対象ノード装置群のうちの上位層のノード装置２が実行していたが、これに限らず、入替対象ノード装置群のうちの下位層のノード装置２が実行してもよい。
また、実施形態では、入替対象ノード装置群を２つの階層に跨るノード装置群としていたが、これをさらに３つの階層（又はそれ以上の数の階層）に跨るノード装置群としてもよい。この場合、この入替対象ノード装置群に属する各ノード装置２が、上述した手順と同様に、お互いの配信能力値やバッファリング量を遣り取りして階層を入れ替えるべきかどうかを判断する。つまり、自ノード装置の階層を含む３つの階層にそれぞれ属する他ノード装置の指標値及びバッファリング量を取得し、他ノード装置が属する３つの階層のいずれかの階層と、自ノード装置が属する階層とを入れ替える処理を行うのである。
実施形態の例では、上位層のノード装置２の配下には必ず複数のノード装置２があったが、必ずしもそうである必要はなく、上位層のノード装置２と下位層のノード装置２とが１対１であってもよい。この場合であっても、上位層のノード装置２は、再生処理と並行して転送処理を行うので、上位層のノード装置２には、転送処理の必要がない下位層のノード装置２よりは高い情報配信能力が必要とされる。
上述した制御部１１が実行するプログラムは、磁気テープ、磁気ディスク、フレキシブルディスク、光記録媒体、光磁気記録媒体、ＣＤ（Compact Disk）、ＤＶＤ（Digital Versatile Disk）、ＲＡＭなどの記録媒体に記録した状態で提供し得る。即ち、本発明をプログラムとして実現することもできる。
【図面の簡単な説明】
【００５４】
【図１】ネットワークシステムの構成を示すブロック図である。
【図２】入替対象となるノード装置群を説明するブロック図である。
【図３】ノード装置の構成を示すブロック図である。
【図４】ノード装置の制御部が実行する処理を表すフローチャートである。
【図５】ノード装置の制御部が実行する処理を表すフローチャートである。
【図６】ノード装置の制御部が実行する処理を表すフローチャートである。
【図７】ネットワークシステムの動作例を示すシーケンス図である。
【図８】ネットワークシステムの動作例を示すシーケンス図である。
【符号の説明】
【００５５】
１００・・・ネットワークシステム、１・・・サーバ装置、２ａ〜２ｘ・・・ノード装置、１１・・・制御部、１２・・・記憶部、１３・・・バッファメモリ、１９・・・通信部。
【図１】
2009044661.tif 000003
【図２】
2009044661.tif 000004
【図３】
2009044661.tif 000005
【図４】
2009044661.tif 000006
【図５】
2009044661.tif 000007
【図６】
2009044661.tif 000008
【図７】
2009044661.tif 000009
【図８】
2009044661.tif 000010