(57)【特許請求の範囲】
【請求項１】
複数のノード装置の参加により形成されたツリー型放送システムであり、当該複数のノード装置が放送装置を最上位として複数の階層を形成しつつ通信手段を介してツリー状に接続され、前記放送装置からコンテンツデータを構成する複数のパケットが放送され、各パケットが上位階層のノード装置から下位階層のノード装置に順次転送されるようにしたツリー型放送システムにおける前記ノード装置であって、
送信されてきた前記パケットを受信する受信手段と、
前記放送装置から放送された前記複数のパケットのうち損失されたパケットを検出する損失パケット検出手段と、
前記損失されたパケットを補完するためのパケット補完要求を示すパケット補完要求情報の送信を所定の待機時間留保させるためのダミーパケットを、前記損失されたパケットの代わりに、自ノード装置の下位階層に接続されているノード装置に送信するダミーパケット送信手段と、
上位階層の前記装置から送信されてきた前記ダミーパケットを受信する受信手段と、
自ノード装置の階層レベルに応じた前記待機時間を算出する待機時間算出手段と、
前記待機時間算出手段により算出された前記待機時間が経過した場合に、前記ダミーパケットに対応する前記損失されたパケットを補完するためのパケット補完要求を示すパケット補完要求情報を上位階層の前記装置に対して送信するパケット補完要求情報送信手段と、
を備えることを特徴とするノード装置。
【請求項２】
請求項１に記載のノード装置において、
前記パケット補完要求情報の送信後、前記パケット補完要求に係るパケットを前記上位階層の前記装置から受信した場合には、当該受信したパケットを、自ノード装置の下位階層に接続されているノード装置に送信する補完パケット送信手段を更に備えることを特徴とするノード装置。
【請求項３】
コンピュータを、請求項１または２に記載のツリー型放送システムにおけるノード装置として機能させることを特徴とするノード処理プログラム。
【請求項４】
複数のノード装置の参加により形成されたツリー型放送システムであり、当該複数のノード装置が放送装置を最上位として複数の階層を形成しつつ通信手段を介してツリー状に接続され、前記放送装置からコンテンツデータを構成する複数のパケットが放送され、各パケットが上位階層のノード装置から下位階層のノード装置に順次転送されるようにしたツリー型放送システムにおいて、
前記ノード装置は、
送信されてきた前記パケットを受信する受信手段と、
前記放送装置から放送された前記複数のパケットのうち損失されたパケットを検出する損失パケット検出手段と、
前記損失されたパケットを補完するためのパケット補完要求を示すパケット補完要求情報を、上位階層の前記装置に対して送信するパケット補完要求情報送信手段と、
前記パケット補完要求情報の送信を、所定の待機時間留保させるためのダミーパケットを、前記損失されたパケットの代わりに、自ノード装置の下位階層に接続されているノード装置に送信するダミーパケット送信手段と、
上位階層の前記ノード装置から送信されてきた前記ダミーパケットを受信する受信手段を備えたノード装置は、
自ノード装置の階層レベルに応じた前記待機時間を算出する待機時間算出手段と、
前記待機時間算出手段により算出された前記待機時間が経過した場合に、前記ダミーパケットに対応する前記損失されたパケットを補完するためのパケット補完要求を示すパケット補完要求情報を前記上位階層のノード装置に対して送信するパケット補完要求情報送信手段と、
を備えることを特徴とするツリー型放送システム。
【請求項５】
複数のノード装置の参加により形成されたツリー型放送システムであり、当該複数のノード装置が放送装置を最上位として複数の階層を形成しつつ通信手段を介してツリー状に接続され、前記放送装置からコンテンツデータを構成する複数のパケットが放送され、各パケットが上位階層のノード装置から下位階層のノード装置に順次転送されるようにしたツリー型放送システムにおけるパケット送信方法であって、
前記ノード装置が、
送信されてきた前記パケットを受信する工程と、
前記放送装置から放送された前記複数のパケットのうち損失されたパケットを検出する工程と、
前記損失されたパケットを補完するためのパケット補完要求を示すパケット補完要求情報の送信を所定の待機時間留保させるためのダミーパケットを、前記損失されたパケットの代わりに、自ノード装置の下位階層に接続されているノード装置に送信する工程と、
上位階層の前記装置から送信されてきた前記ダミーパケットを受信する工程と、
自ノード装置の階層レベルに応じた前記待機時間を算出する工程と、
算出された前記待機時間が経過した場合に、前記ダミーパケットに対応する前記損失されたパケットを補完するためのパケット補完要求を示すパケット補完要求情報を上位階層の前記装置に対して送信する工程と、
を含むことを特徴とするパケット送信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して互いに通信可能な複数のノード装置を備えたピアツーピア（Peer to Peer（P2P））型の通信システムの技術分野に関する。
【背景技術】
【０００２】
従来から、アプリケーション層においてコンテンツデータの配信（放送）経路を管理しながらコンテンツデータストリームの中継配信を行う「Application Layer Multicast（ALM）」という技術が知られている。例えば、特許文献１に開示されたツリー型放送システムにおいては、該システムに参加している複数のノード装置が放送局（例えば、放送装置）を最上位として複数の階層を形成しつつネットワークを介してツリー状に接続され、当該放送局から放送されたコンテンツデータが、上位階層のノード装置から下位階層のノード装置に順次転送（中継）されるようになっている。このような技術では、各ノード装置は、上位階層のノード装置から受信したコンテンツデータストリームを構成する各パケットを、下位階層に接続されたノード装置の数分だけアプリケーション層で複製してから中継する。この結果、コンテンツデータの配信経路はツリー状となり、少ない中継段数で多数のノード装置へコンテンツデータの同報配信ができる。
【０００３】
ところで、このような技術では、例えばユーザの端末機器を中継ノード装置として利用するため、仮に端末機器が接続されているアクセスラインの回線品質が安定していたとしても、端末機器のネットワーク使用状況に依存して中継されるべきパケットが端末機器上で損失しやすい。ＡＬＭの実装として、上位階層のノード装置から受信したパケットが即座に下位階層のノード装置へ中継される実装となっている場合には、パケット損失が下位階層の方向へ即時に伝播していくことになる。
【０００４】
通常、端末機器に搭載されているＡＬＭプログラムは、上位階層のノード装置から受信したパケットをリングバッファ等のリングバッファに蓄積するが、このときパケットのシーケンス番号の連続性を検査することでパケット損失事象を発見することが可能である。かかる損失が検出されたパケットについては、当該パケットを補完するためのパケット補完要求が直属の上位階層のノード装置に対してなされる。そして、当該上流階層のノード装置では、自身のバッファメモリ上にパケット補完要求の対象となるパケットが存在するか否かを確認し、存在すれば、かかるパケットを要求元のノード装置へ送信し、存在しなれば、自ノード装置のさらに上位階層のノード装置へパケット補完要求を転送する。
【特許文献１】特開２００６−３３５１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述したＡＬＭの技術では、パケット損失が下位階層の方向へ即時伝播する性質があるため、トポロジーのルート（より上位の階層）付近でパケット損失が発生すると、その付近のノード装置は、下位階層の方向に位置する全てのノード装置から短時間にパケット補完要求を受信することになる。この下位階層の方向に位置するノード装置の数は、数百、数千のオーダになることもあり、この水準になるとパケット補完要求の受信過多に起因するネットワーク過負荷状態が起きてしまうという問題がある。
【０００６】
そこで、本発明は、以上の問題等に鑑みてなされたものであり、パケット損失事象が下位階層の方向へ伝播することにより生じるパケット補完要求の連鎖的送出を回避し、ネットワークに対する過剰なトラフィックの防止と、特定のノード装置に対するパケット補完要求の集中回避を実現可能なツリー型放送システム、パケット送信方法、ノード装置、及びノード処理プログラムを提供することを課題とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、請求項１に記載の発明は、複数のノード装置の参加により形成されたツリー型放送システムであり、当該複数のノード装置が放送装置を最上位として複数の階層を形成しつつ通信手段を介してツリー状に接続され、前記放送装置からコンテンツデータを構成する複数のパケットが放送され、各パケットが上位階層のノード装置から下位階層のノード装置に順次転送されるようにしたツリー型放送システムにおける前記ノード装置であって、送信されてきた前記パケットを受信する受信手段と、前記放送装置から放送された前記複数のパケットのうち損失されたパケットを検出する損失パケット検出手段と、前記損失されたパケットを補完するためのパケット補完要求を示すパケット補完要求情報の送信を所定の待機時間留保させるためのダミーパケットを、前記損失されたパケットの代わりに、自ノード装置の下位階層に接続されているノード装置に送信するダミーパケット送信手段と、上位階層の前記装置から送信されてきた前記ダミーパケットを受信する受信手段と、自ノード装置の階層レベルに応じた前記待機時間を算出する待機時間算出手段と、前記待機時間算出手段により算出された前記待機時間が経過した場合に、前記ダミーパケットに対応する前記損失されたパケットを補完するためのパケット補完要求を示すパケット補完要求情報を上位階層の前記装置に対して送信するパケット補完要求情報送信手段と、を備えることを特徴とする。
【０００８】
この発明によれば、パケット損失事象が下位階層の方向へ伝播することにより生じるパケット補完要求の連鎖的送出を回避し、ネットワークに対する過剰なトラフィックの防止と、特定のノード装置に対するパケット補完要求の集中回避を実現することができ、上記待機時間のタイムアウトが同期して短時間に集中してパケット補完要求が行われることを回避することができる。
【０００９】
請求項２に記載の発明は、請求項１に記載のノード装置において、前記パケット補完要求情報の送信後、前記パケット補完要求に係るパケットを前記上位階層の前記装置から受信した場合には、当該受信したパケットを、自ノード装置の下位階層に接続されているノード装置に送信する補完パケット送信手段を更に備えることを特徴とする。
【００１０】
この発明によれば、ダミーパケットを受信したノード装置は、上記待機時間中に、上記損失されたパケットを迅速に補完することができる。
【００１７】
請求項３に記載のノード処理プログラムは、コンピュータを、請求項１または２に記載のツリー型放送システムにおけるノード装置として機能させることを特徴とする。
【００１８】
請求項４に記載の発明は、複数のノード装置の参加により形成されたツリー型放送システムであり、当該複数のノード装置が放送装置を最上位として複数の階層を形成しつつ通信手段を介してツリー状に接続され、前記放送装置からコンテンツデータを構成する複数のパケットが放送され、各パケットが上位階層のノード装置から下位階層のノード装置に順次転送されるようにしたツリー型放送システムにおいて、前記ノード装置は、送信されてきた前記パケットを受信する受信手段と、前記放送装置から放送された前記複数のパケットのうち損失されたパケットを検出する損失パケット検出手段と、前記損失されたパケットを補完するためのパケット補完要求を示すパケット補完要求情報を、上位階層の前記装置に対して送信するパケット補完要求情報送信手段と、前記パケット補完要求情報の送信を、所定の待機時間留保させるためのダミーパケットを、前記損失されたパケットの代わりに、自ノード装置の下位階層に接続されているノード装置に送信するダミーパケット送信手段と、上位階層の前記ノード装置から送信されてきた前記ダミーパケットを受信する受信手段を備えたノード装置は、自ノード装置の階層レベルに応じた前記待機時間を算出する待機時間算出手段と、前記待機時間算出手段により算出された前記待機時間が経過した場合に、前記ダミーパケットに対応する前記損失されたパケットを補完するためのパケット補完要求を示すパケット補完要求情報を前記上位階層のノード装置に対して送信するパケット補完要求情報送信手段と、を備えることを特徴とする。
【００１９】
請求項５に記載の発明は、複数のノード装置の参加により形成されたツリー型放送システムであり、当該複数のノード装置が放送装置を最上位として複数の階層を形成しつつ通信手段を介してツリー状に接続され、前記放送装置からコンテンツデータを構成する複数のパケットが放送され、各パケットが上位階層のノード装置から下位階層のノード装置に順次転送されるようにしたツリー型放送システムにおけるパケット送信方法であって、前記ノード装置が、送信されてきた前記パケットを受信する工程と、前記放送装置から放送された前記複数のパケットのうち損失されたパケットを検出する工程と、前記損失されたパケットを補完するためのパケット補完要求を示すパケット補完要求情報の送信を所定の待機時間留保させるためのダミーパケットを、前記損失されたパケットの代わりに、自ノード装置の下位階層に接続されているノード装置に送信する工程と、上位階層の前記装置から送信されてきた前記ダミーパケットを受信する工程と、自ノード装置の階層レベルに応じた前記待機時間を算出する工程と、算出された前記待機時間が経過した場合に、前記ダミーパケットに対応する前記損失されたパケットを補完するためのパケット補完要求を示すパケット補完要求情報を上位階層の前記装置に対して送信する工程と、を含むことを特徴とする。
【発明の効果】
【００２０】
本発明によれば、放送装置から放送された前記複数のパケットのうち損失されたパケットを検出し、当該損失されたパケットを補完するためのパケット補完要求を示すパケット補完要求情報を、上位階層の前記装置に対して送信し、且つ、前記パケット補完要求情報の送信を、所定の待機時間留保させるためのダミーパケットを、前記損失されたパケットの代わりに、自ノード装置の下位階層に接続されているノード装置に送信するように構成したので、パケット損失事象が下位階層の方向へ伝播することにより生じるパケット補完要求の連鎖的送出を回避し、ネットワークに対する過剰なトラフィックの防止と、特定のノード装置に対するパケット補完要求の集中回避を実現することができる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の最良の実施形態を図面に基づいて説明する。
［１．ツリー型放送システムの構成等］
始めに、図１等を参照して、本発明の一実施形態に係るツリー型放送システムの概要構成及び機能について説明する。
【００２２】
図１は、本実施形態に係るツリー型放送システムにおける各ノード装置の接続態様の一例を示す図である。
【００２３】
図１の下部枠１０１内に示すように、ＩＸ（Internet eＸchange）３、ＩＳＰ（Internet Service Provider）４ａ，４ｂ、ＤＳＬ（Digital Subscriber Line）回線事業者（の装置）５ａ，５ｂ、ＦＴＴＨ（Fiber To The Home）回線事業者（の装置）６、及び通信回線（例えば、電話回線や光ケーブル等）７等によって、インターネット等のネットワーク（現実世界の通信ネットワーク）８が構築されている。なお、図１の例におけるネットワーク（通信ネットワーク）８には、データ（パケット）を転送するためのルータが、適宜挿入されているが図示を省略している。
【００２４】
このようなネットワーク８には、複数のノード装置（以下、「ノード」という）Ｎｎ（ｎ＝１，２，３・・・の何れか）が接続されている。また、各ノードＮｎには、固有の製造番号およびＩＰ（Internet Protocol）アドレスが割り当てられている。このような製造番号およびＩＰアドレスは、複数のノード間で重複しないものである。
【００２５】
そして、本実施形態に係るツリー型放送システムＳは、これらのノードＮｎのうち、図１の上部枠１００内に示すように、何れか複数のノードＮｎの参加により形成（構成）されるピアツーピア方式のネットワークシステムであり、該システムＳ（言い換えれば、ツリートポロジー）に参加している複数のノードＮｎが放送局（放送装置）１０を最上位として複数の階層を形成しつつネットワーク８を介してツリー状に接続されている。なお、図１の上部枠１００内に示すネットワーク９は、既存のネットワーク８を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク９（論理的なネットワーク）である。
【００２６】
このようなツリー型放送システムＳにおいては、放送局１０により放送（例えばストリーム配信）されたコンテンツデータストリームが、上位階層（以下、「上流」という）のノードＮｎから下位階層（以下、「下流」という）のノードＮｎに順次転送（ＡＬＭ（Application Layer Multicast））されるようになっている。
【００２７】
また、ツリー型放送システムＳにおいて形成されたツリートポロジーは、接続先紹介サーバ２０により管理されている。
【００２８】
図２は、ノードＮ１２がツリー型放送システムＳへの参加する際の様子を示した概念図である。
【００２９】
図２の例において、ノードＮ１２がツリー型放送システムＳに参加（言い換えれば、ツリートポロジーに参加）する場合、先ず、当該ノードＮ１２は、接続先紹介サーバ２０へ接続先候補となる上流のノード（以下、「上流ノード」という）Ｎｎの紹介要求メッセージを送信する（（１）：接続先紹介要求）。接続先紹介サーバ２０は、内部で管理しているトポロジー管理情報の中から下流側に接続が可能なノードＮｎを検索し、１以上の上流ノード候補のノード情報（例えば、ＩＰ（Internet Protocol）アドレス及びポート番号等のネットワーク上のアドレス情報）等を含む接続先候補紹介メッセージをノードＮ１２へ返信する（（２）：接続先候補紹介））。次に、ノードＮ１２は、接続先紹介サーバ２０から取得した上流ノード候補の中から一つの例えばノードＮ２を選択し、当該ノードＮ２へ接続要求メッセージを送信する（（３）：接続要求）。次に、ノードＮ２は、内部で管理しているノード管理テーブルにノードＮ１２の情報を追加し、ノードＮ１２へ接続許可応答メッセージを返信する（（４）：接続許可）。次に、ノードＮ１２は、ノードＮ２へストリーム開始要求メッセージを送信する（（５）：ストリーム開始要求）。そして、ノードＮ２は、ノードＮ１２に対してストリーミングを開始する（（６）：ストリーミング）。最後に、ノードＮ１２は、接続先紹介サーバ２０に対してトポロジー参加報告メッセージを送信する（（７）：トポロジー参加報告）。こうして、ツリー型放送システムＳへのノードＮ１２の参加が完了する。
【００３０】
一方、ノードＮ１２がツリー型放送システムＳから脱退（離脱）する場合、当該ノードＮ１２は、ストリーム供給元である上流ノードＮ２に対してストリーム停止要求メッセージと接続解除要求メッセージを送信する。これに応じて、ノードＮ２は、ストリーム中継用オブジェクトを破棄することでノードＮ１２に対するストリーミングを停止し、同時にノード管理テーブルからノードＮ１２の情報を削除することでノードＮ２との接続関係を断ち切る。
【００３１】
このとき、脱退するノードＮｎの下流側にノードＮｎが存在していた場合、当該下流のノード（以下、「下流ノード」という）Ｎｎは、例えば、以下のａ）、ｂ）のいずれかの方法で放送経路の復元を行うことになる。
【００３２】
ａ）タイムアウト方式による再生
上流ノードＮｎからのストリーミング状態を常時監視しておき、一定時間、ストリーム供給が途絶したこと（自律的再接続事象の発生）を契機として、当該上流ノードＮｎとの接続状態を破棄して新たな上流ノードＮｎに再接続する。
【００３３】
ｂ）イベント通知方式による再生
上流ノードＮｎがツリー型放送システムＳから脱退する際、直下の下流ノードＮｎに向けて脱退イベントを通知する。下流ノードＮｎが上流ノードＮｎからの脱退イベントを受信する（自律的再接続事象の発生）と、上流ノードＮｎとの接続状態を破棄して新たな上流ノードＮｎに再接続する。
【００３４】
また、ツリー型放送システムＳに参加している各ノードＮｎは、上流ノードＮｎからのストリーム受信状態を監視し、一定の受信品質未満となったら（自律的再接続事象の発生）、上流ノードＮｎを切り替え、新たな上流ノードＮｎに再接続するようになっている。なお、受信品質の評価基準としては、過去一定期間における平均パケットレートおよびパケット損失率を用いることができる。
【００３５】
［１−１．放送局１０の構成等］
次に、図３を参照して、放送局１０の構成及び機能について説明する。
図３は、放送局１０の概要構成例を示す図である。
【００３６】
放送局１０は、図３に示すように、主電源１０１、主記憶装置１０２、ハードディスク装置１０３、ＣＰＵ１０４、ネットワークインタフェース１０５、周辺機器制御チップ１０６、ビデオチップ１０７、音源チップ１０８、及び内蔵スピーカ１１２等を備えて構成されている。また、放送局１０は、ルータ１１４を介してネットワーク８に接続される。なお、このような放送局１０として、専用の放送サーバの他、何れかのノードＮｎが適用されても良い。
【００３７】
また、主電源１０１、主記憶装置１０２、ハードディスク装置１０３、ＣＰＵ１０４、ネットワークインタフェース１０５、周辺機器制御チップ１０６、ビデオチップ１０７、及び音源チップ１０８は、システムバス１１３を介して相互に接続されている。また、キーボード１０９及びマウス１１０は、周辺機器制御チップ１０６に接続され、ディスプレイ１１１は、ビデオチップ１０７に接続されている。
【００３８】
主記憶装置１０２は、ＲＡＭ及びＲＯＭ等を備えて構成されており、オペレーティングシステム、ストリーム制御プログラム、画面制御プログラム、トポロジー制御プログラム、接続先候補探索プログラム、及びデコーダ（プログラム）等が記憶されている。また、主記憶装置１０２は、ノード管理テーブルを記憶しており、該ノード管理テーブルには、放送局１０の下流に接続されたノードＮｎのアドレス情報が登録される。また、主記憶装置１０２は、バッファメモリ（例えば、リングバッファ）を有する。
【００３９】
また、ハードディスク装置１０３には、放送用コンテンツデータが記録されている。
【００４０】
ＣＰＵ１０４は、主記憶装置１０２に記憶された各種プログラムにしたがって（つまり、プログラムの実行により）、例えばハードディスク装置１０３に記録されたコンテンツデータをパケット化し、ノード管理テーブルに登録された下流のノードＮｎに対して放送（ストリーム配信）する放送処理を行う。
【００４１】
［１−２．接続先紹介サーバ２０の構成等］
次に、図４を参照して、接続先紹介サーバ２０の構成及び機能について説明する。
図４は、接続先紹介サーバ２０の概要構成例を示す図である。
【００４２】
接続先紹介サーバ２０は、図４に示すように、主電源２０１、主記憶装置２０２、ハードディスク装置２０３、ＣＰＵ２０４、ネットワークインタフェース２０５、周辺機器制御チップ２０６、及びビデオチップ２０７等を備えて構成されている。また、接続先紹介サーバ２０は、ルータ２１２を介してネットワーク８に接続される。
【００４３】
また、主電源２０１、主記憶装置２０２、ハードディスク装置２０３、ＣＰＵ２０４、ネットワークインタフェース２０５、周辺機器制御チップ２０６、及びビデオチップ２０７は、システムバス２１１を介して相互に接続されている。また、キーボード２０８及びマウス２０９は、周辺機器制御チップ２０６に接続され、ディスプレイ２１０は、ビデオチップ２０７に接続されている。
【００４４】
主記憶装置２０２は、ＲＡＭ及びＲＯＭ等を備えて構成されており、オペレーティングシステム、ノード管理プログラム、トポロジー管理プログラム、接続先候補紹介プログラム、及び運用管理プログラム等が記憶されている。
【００４５】
また、ハードディスク装置２０３には、放送局管理データベース及びトポロジーデータベースが構築されている。放送局管理データベースには、各放送局１０の所在情報（ＩＰアドレス及びポート番号等）が放送チャンネル情報（例えばチャンネル番号）に対応付けられて登録される。また、トポロジーデータベースには、トポロジー管理情報が登録されている。かかるトポロジー管理情報は、放送チャンネル毎に存在し、放送チャンル情報に対応付けられている。そして、トポロジー管理情報には、ツリートポロジーに参加している各ノードＮｎのノード情報と、ツリートポロジーにおいて各ノードＮｎが位置する階層と、各ノードＮｎ夫々の下流に接続されているノードを示す下流ノード情報と、各ノードＮｎの下流側に接続可能なノードの接続許容数と、各ノードＮｎが他のノードＮｎへコンテンツデータを転送する転送能力と、が含まれている。ここで、転送能力とは、例えば、ノードＮｎのＣＰＵの処理速度（ＧＨｚ）やネットワーク８における有効帯域（例えば、データ転送速度（ｂｐｓ））のことをいう。
【００４６】
ＣＰＵ２０４は、主記憶装置２０２に記憶された各種プログラムにしたがって、例えばノードＮｎからの接続先紹介要求メッセージに応じて上記トポロジー管理情報から、下流側に接続されているノードの数が接続許容数に満たない（下流側に接続が可能なノードＮｎ）接続先候補を検索し、当該検索した１以上の接続先候補のノード情報を含む接続先候補紹介メッセージを返信する返信処理を行う。
【００４７】
［１−３．ノードＮｎの構成等］
次に、図５を参照して、ノードＮｎの構成及び機能について説明する。
図５は、ノードＮｎの概要構成例を示す図である。
【００４８】
ノードＮｎは、図５に示すように、主電源３０１ａ、補助電源３０１ｂ、主記憶装置３０２、ハードディスク装置３０３、ＣＰＵ３０４、ネットワークインタフェース３０５、周辺機器制御チップ３０６、ビデオチップ３０７、音源チップ３０８、ユーザ入力用リモコン３１０との間で赤外線通信を行うための赤外線ポート３０９、内蔵ディスプレイ３１１、及び内蔵スピーカ３１２等を備えて構成されている。また、ノードＮｎは、ルータ３１４を介してネットワーク８に接続される。なお、ノードＮｎとしては、ＰＣ、ＳＴＢ（Set Top Box）、或いは、ＴＶ受信機等を適用可能である。
【００４９】
また、主電源３０１ａ、主記憶装置３０２、ハードディスク装置３０３、ＣＰＵ３０４、ネットワークインタフェース３０５、周辺機器制御チップ３０６、ビデオチップ３０７、及び音源チップ３０８は、システムバス３１３を介して相互に接続されている。
【００５０】
主記憶装置３０２は、ＲＡＭ及びＲＯＭ等を備えて構成されており、オペレーティングシステム、ストリーム制御プログラム、画面制御プログラム、トポロジー制御プログラム、バッファメモリ監視プログラム、及びデコーダ等が記憶されている。
【００５１】
また、主記憶装置３０２には、接続先紹介サーバ２０の所在情報（ＩＰアドレス及びポート番号等）が記憶されている。また、主記憶装置３０２は、ノード管理テーブルを記憶しており、該ノード管理テーブルには、自ノードに直接接続された下流ノードＮｎのノード情報（ＩＰアドレス及びポート番号等）が登録される。
【００５２】
また、主記憶装置３０２は、受信したコンテンツデータを構成する各パケットを一時的に蓄積するためのバッファメモリ（例えば、リングバッファ）を有する。
【００５３】
ＣＰＵ３０４は、主記憶装置３０２に記憶された各種プログラム（本発明のノード処理プログラムを含む）にしたがって、ツリー型放送システムＳに参加するための新規参加処理を実行し、参加後に放送局１０又は上流ノードＮｎから配信されネットワークインタフェース３０５を介して受信されたコンテンツデータのパケットをバッファリングさせつつ再生処理を行う。
【００５４】
ここで、上記新規参加処理では、接続先紹介サーバ２０に対して接続先紹介要求メッセージが送信され、接続先紹介サーバ２０から紹介された上流ノードＮｎに接続（セッション確立）してストリーム開始要求がなされる。
【００５５】
また、上記再生処理では、受信されバッファメモリに蓄積されたコンテンツデータ（例えば、ビデオデータ及びオーディオデータ）が読み出されデコーダによりデコードされる。そして、デコードされたビデオデータ（映像情報）がビデオチップ３０７を通じて内蔵ディスプレイ３１１（又は図示しない外部ディスプレイ）に出力され、デコードされたオーディオデータ（音声情報）が音源チップ３０８を通じて内蔵スピーカ３１２（又は図示しない外部スピーカ）から出力される。
【００５６】
また、自ノードに下流ノードＮｎが接続されている場合、ＣＰＵ３０４は、バッファメモリに蓄積されたコンテンツデータの各パケットを当該下流ノードＮｎに転送（コンテンツストリームの中継）する転送処理を行う。
【００５７】
更に、ＣＰＵ３０４は、上記プログラムの実行により本発明の受信手段、損失パケット検出手段、パケット補完要求情報送信手段、ダミーパケット送信手段、補完パケット送信手段、待機時間選択手段、及び待機時間算出手段等として機能するようになっている。
【００５８】
パケット検出手段としてのＣＰＵ３０４は、放送局１０から放送された複数のパケット（コンテンツパケット）のうち損失されたパケットを検出する。例えば、ＣＰＵ３０４は、放送局１０又は上流ノードＮｎから受信したパケットをバッファメモリに蓄積する際に、当該パケットのＳｅｑ（シーケンス）番号の連続性を検査することでパケットの損失事象を発見する。
【００５９】
図６は、バッファメモリの構造例を示す図である。ＣＰＵ３０４は、初期化時に循環構造を持つスロットと呼ばれる連続データ領域を主記憶装置３０２上に用意し、夫々のスロットに対して１からＮ（自然数）の連続したＳｅｑ番号を割り振る。あるノードＮｎにおいて、例えば上流ノードＮｎからパケットが受信されたとき、当該パケットのＳｅｑ番号が検査され、当該パケットが該当する番号のスロットに収納されることでパケットデータが蓄積される。仮に、Ｓｅｑ番号が連続していないパケット（図６の例で、Ｓｅｑ番号が９番のパケット）が受信された場合でも該当する番号のスロットに適宜収納されていくことになる。
【００６０】
そして、仮に損失が検出された場合（図６の例で、Ｓｅｑ番号が８番のパケット）には、当該損失を検出したノードＮｎのＣＰＵ３０４は、損失されたパケットを補完するためのパケット補完要求を示すパケット補完要求メッセージ（パケット補完要求情報）を、放送局１０又はその上流ノードＮｎに対して送信する。さらに、パケットの損失が検出されたときに、自ノードに下流ノードＮｎが接続されている場合、ＣＰＵ３０４は、損失したパケットに対応するＳｅｑ番号を含むダミーパケットを生成し、当該受信したパケットの中継に先んじて当該ダミーパケットを自ノードに接続されている下流ノードＮｎに送信する。
【００６１】
そして、上記パケット補完要求メッセージの送信後、当該損失を検出したノードＮｎのＣＰＵ３０４は、当該パケット補完要求に係る補完パケットを放送局１０又はその上流ノードＮｎから受信した場合に、当該受信した補完パケットを自ノードに接続されている下流ノードＮｎに送信することになる。
【００６２】
図７は、ダミーパケットが送信される様子を示す概念図である。図７の例では、放送局１０からノードＮ２の間で、Ｓｅｑ番号が８番のパケットが損失した例を示しており、損失したパケットに代わるダミーパケットがノードＮ２により生成されて下流ノードＮ５及びＮ１２に送信されている。さらに、当該ダミーパケットは、これを受信したノードＮ５により、下流ノードＮ１０及びＮ１１に送信されている（ノードＮ１２についても同様）。なお、受信されたダミーパケットは、これに含まれるＳｅｑ番号に該当するスロット（図６の例で、８番のスロット）に収納される。
【００６３】
ここで、ダミーパケットは、図７に示すようなデータ構造を有しており、ペイロード部には、ＡＰ（アプリケーション）識別子、ＭＳＧ（メッセージ）識別子、Ｓｅｑ（シーケンス）番号、Ａｇｉｎｇ（エージング）時間、及び中継ｈｏｐ（ホップ）数が記述されている。ＡＰ識別子はプログラム固有の識別情報であり、ＭＳＧ識別子はメッセージ固有の識別情報であり、Ｓｅｑ番号はコンテンツデータのパケットの通し番号であり、Ａｇｉｎｇ時間はダミーパケットが生起してから消滅するまでの生存期間（言い換えれば、後述する待機時間）を決めるための値であり、中継ｈｏｐ数は放送局１０を起点としたノードＮｎによる中継ホップ回数である。なお、中継ホップ回数は各受信ノードＮｎにおいてインクリメントされる。
【００６４】
このようなダミーパケットは、パケット補完要求メッセージの送信を、所定の待機時間、下流ノードＮｎに留保させるためのパケットであり、上記損失されたパケットの代わりに当該下流ノードＮｎに送信される。ダミーパケットを受信した下流ノードＮｎのＣＰＵ３０４は、ダミーパケットを通常のコンテンツパケットとみなしてパケットのＳｅｑ番号の連続性を検査することにより、上流側で損失したパケットの損失事象を重複して検出しなくなり、上記待機時間だけパケット補完要求を発生させない。これにより、パケット補完要求の連鎖的発生を抑制することが可能となる。
【００６５】
通常は、ダミーパケットを受信した下流ノードＮｎにおいて上記待機時間だけパケット補完要求の発生を待っている間に、最初にパケット損失を検出したノードＮｎ（図７の例では、ノードＮ２）が放送局１０又はその上流ノードＮｎから補完パケットを再送してもらいこの補完パケットを下流ノードＮｎへ中継転送する。これにより、先にダミーパケットを受信していた下流ノードＮｎにおいてダミーパケットが補完パケットに置き換わり、損失パケットの補完が完了する。つまり、暫定的にダミーパケットで埋められたスロット（図６の例で、８番のスロット）が、遅延送信されてきた補完パケットで置き換えられる。
【００６６】
ただし、ツリートポロジーにおいて、例えば上流ノードＮｎの脱退（離脱）を契機として上流ノードへの再接続（接続切り替え）処理が発生したとき、ダミーパケットがバッファメモリに蓄積された状態で上流ノードへの再接続処理を行うと、最初に損失を検出した上流ノードＮｎからダミーパケットに対応する補完パケットを受信できなくなる。この状態を回避するために、ダミーパケットを持っている下流ノードＮｎのＣＰＵ３０４は、上記待機時間が経過した時点でバッファメモリ中のダミーパケットを無効とし、これを契機として現在の直属上流ノードＮｎに対してパケット補完要求を発行することで、確実にダミーパケットが真のコンテンツパケットに置き換えられる。つまり、上記待機時間が経過した場合に、ダミーパケットに対応する損失されたパケットを補完するためのパケット補完要求を示すパケット補完要求メッセージが上流ノードＮｎに対して送信されることになる。
【００６７】
ここで、下流ノードＮｎにおいてパケット補完要求メッセージが送信されるまでの上記待機時間は、バッファメモリに蓄積されたパケットに含まれるコンテンツデータが再生されるまでの再生移行時間、例えば、パケットがバッファメモリに格納されてからデコーダにより読み出されるまでの時間（例えば、１０秒〜３０秒）が考慮され（上記再生移行時間により上記待機時間が短くなるように）、上記ダミーパケットのペイロード部に記述されるＡｇｉｎｇ時間に基づき決定される。
【００６８】
このＡｇｉｎｇ時間としては、例えば、パケットの損失検出時刻から上記待機時間（例えば、１０秒）後の時刻がダミーパケットを生成するノードＮｎにおいてダミーパケットのペイロード部に記述され、当該ダミーパケットが送信される。そして、Ａｇｉｎｇ時間として記述された時刻が、ダミーパケットを受信したノードＮｎにおいて到来（つまり、上記待機時間がタイムアウト）した場合に、当該ダミーパケットを受信したノードＮｎから上流ノードＮｎに対してパケット補完要求メッセージが送信されることになる。
【００６９】
或いは、Ａｇｉｎｇ時間として、パケットの損失検出時刻と上記待機時間（例えば、１０秒）が、ダミーパケットを生成するノードＮｎにおいてダミーパケットのペイロード部に記述され、当該ダミーパケットが送信されるようにしても良い。この場合、Ａｇｉｎｇ時間として記述された損失検出時刻から上記待機時間後の時刻がダミーパケットを受信したノードＮｎのＣＰＵ３０４により計算され、当該時刻が到来した場合に、当該ダミーパケットを受信したノードＮｎから上流ノードＮｎに対してパケット補完要求メッセージが送信されることになる。或いは、Ａｇｉｎｇ時間として、パケットの損失検出時刻のみが、ダミーパケットを生成するノードＮｎにおいてダミーパケットのペイロード部に記述され、上記待機時間（例えば、１０秒）は予め全てのノードＮｎにおいて設定されるようにしても良い。この場合も、Ａｇｉｎｇ時間として記述された損失検出時刻から上記待機時間後の時刻がダミーパケットを受信したノードＮｎにより計算されることになる。
【００７０】
ところで、上記例では、ダミーパケットを受信した各ノードＮｎにおける上記待機時間のタイムアウトが同期し、これらのノードＮｎから短時間に集中してパケット補完要求メッセージが送信されてしまう問題が生じる。従って、一部のノードＮｎ間で当該待機時間をずらすように構成することが望ましい。
【００７１】
一つの例として、上記待機時間を一定範囲でランダムに決める手法が挙げられる。例えば、Ａｇｉｎｇ時間として、パケットの損失検出時刻と予め定められた待機時間範囲（例えば、１０秒〜３０秒）が、ダミーパケットを生成するノードＮｎにおいてダミーパケットのペイロード部に記述され、当該ダミーパケットが送信されるように構成する。そして、ダミーパケットを受信したノードＮｎのＣＰＵ３０４は、上記待機時間範囲（例えば、１０秒（最低値）〜３０秒（最高値））の間で何れかの待機時間をランダム（乱数を発生させることによる）に選択し、Ａｇｉｎｇ時間として記述された損失検出時刻から当該選択した待機時間後の時刻を計算し、当該時刻が到来した場合に、上流ノードＮｎに対してパケット補完要求メッセージを送信する。これにより、上記待機時間のタイムアウトを契機として短時間に集中してパケット補完要求メッセージが送信されることを回避できる。なお、Ａｇｉｎｇ時間として、パケットの損失検出時刻のみが、ダミーパケットを生成するノードＮｎにおいてダミーパケットのペイロード部に記述され、上記待機時間範囲は予め全てのノードＮｎにおいて設定されるようにしても良い。
【００７２】
もう一つの例として、上記待機時間を、ダミーパケットを受信したノードＮｎの階層レベルに応じた時間に決める手法が挙げられる。例えば、Ａｇｉｎｇ時間として、パケットの損失検出時刻と基準時間（例えば、１０秒）が、ダミーパケットを生成するノードＮｎにおいてダミーパケットのペイロード部に記述されるように構成する。そして、ダミーパケットを受信したノードＮｎのＣＰＵ３０４は、自ノードの階層レベル（下流に行くほど階層レベルが大きくなる）に比例した値を上記基準時間に加算して待機時間（つまり、階層レベルに応じた待機時間）を算出（例えば、待機時間＝階層レベル×固定値（例えば１秒）＋基準時間）する。そして、当該ＣＰＵ３０４は、Ａｇｉｎｇ時間として記述された損失検出時刻から上記算出した待機時間後の時刻を計算し、当該時刻が到来した場合に、上流ノードＮｎに対してパケット補完要求メッセージを送信する。例えば階層レベルが「２０」のノードＮｎでは上記待機時間が３０秒となる。これにより、上記待機時間のタイムアウトを契機として短時間に集中してパケット補完要求メッセージが送信されることを回避できると共に、より下流のノードＮｎほど上記待機時間が長くなるのでより効率が良くなる。なお、Ａｇｉｎｇ時間として、パケットの損失検出時刻のみが、ダミーパケットを生成するノードＮｎにおいてダミーパケットのペイロード部に記述され、上記基準時間は予め全てのノードＮｎにおいて設定されるようにしても良い。
【００７３】
なお、上記においては、待機時間の基準（起算点）となる時刻（言い換えれば、待機時間の計時開始時刻）を損失検出時刻としたが、別の例として当該待機時間の基準となる時刻を各ノードＮｎにおけるダミーパケットの受信時刻としても良い。この場合、Ａｇｉｎｇ時間にはダミーパケットの損失検出時刻を含めなくても良くなり、加えて、待機時間のタイムアウトが同期するのを多少なりと回避することができる。
【００７４】
また、ダミーパケットがバッファメモリに蓄積された状態で上流ノードへの再接続処理を行ったノードＮｎは、再接続後、上記待機時間が経過せずとも、直ちに上流ノードＮｎに対してパケット補完要求メッセージを送信するように構成しても良い。
【００７５】
［２．ツリー型放送システムＳの動作］
次に、本実施形態に係るツリー型放送システムＳの動作について説明する。
（ノードＮｎの処理）
先ず、図８乃至図１１を参照して、ノードＮｎにおけるＣＰＵ３０４の処理について説明する。
図８乃至図１１は、ノードＮｎにおけるＣＰＵ３０４により実行される処理を示すフローチャートである。
【００７６】
図８の処理は、例えば主電源３０１ａ及び補助電源３０１ｂのオンによりノードＮｎが起動することにより開始される。当該処理が開始されると、ステップＳ１では、ノードＮｎにおける各種プログラムが初期化される。
【００７７】
ステップＳ２では、ユーザ入力用リモコン３１０を介してユーザからの新規参加要求があったか否か、又は自律的再接続事象が発生したか（生起されたか）否かが判別される。
【００７８】
そして、ユーザからの新規参加要求があった場合、又は自律的再接続事象が発生した場合には（ステップＳ２：ＹＥＳ）、ステップＳ３に進み、ユーザからの新規参加要求及び自律的再接続事象の発生がない場合には（ステップＳ２：ＮＯ）、ステップＳ６に進む。
【００７９】
ステップＳ３では、接続先紹介サーバ２０の所在情報にしたがって当該接続先紹介サーバ２０に対して接続先候補紹介要求メッセージが送信される。
【００８０】
ステップＳ４では、ノードＮｎの主電源３０１ａがオフになったか否かが判別される。そして、主電源３０１ａがオフになった場合には（ステップＳ４：ＹＥＳ）、ステップＳ５に進み、主電源３０１ａがオフになっていない場合には（ステップＳ４：ＮＯ）、ステップＳ２に戻る。
【００８１】
ステップＳ５では、主電源３０１ａがオフ状態になったことを契機として各種プログラムが終了され、補助電源３０１ｂがオフにされ、当該処理が終了する。
【００８２】
ステップＳ６では、接続先紹介サーバ２０から接続先候補紹介メッセージが受信されたか否かが受信されたか否かが判別される。そして、接続先候補紹介メッセージが受信された場合には（ステップＳ６：ＹＥＳ）、ステップＳ７に進み、接続先候補紹介メッセージが受信されていない場合には（ステップＳ６：ＮＯ）、ステップＳ１１に進む。
【００８３】
ステップＳ７では、接続先候補紹介メッセージの受信により取得された１又は複数の接続先（上流ノード）候補の中から条件に合う（或いは、ランダムに）ノードＮｎが接続先（又は再接続先）として一つ選択される。
【００８４】
ステップＳ８では、上記選択された接続先となるノードＮｎに対してＮＡＴ越え処理（ルータのＷＡＮ側のネットワークからＬＡＮ側ネットワークへパケットを通過させるための処理）が行われる。
【００８５】
ステップＳ９では、上記選択された接続先となるノードＮｎに対して接続要求メッセージが送信される。
【００８６】
ステップＳ１０では、接続処理を監視するために接続処理監視タイマが起動され、ステップＳ４に戻る。
【００８７】
ステップＳ１１では、上記接続要求メッセージを受信した上流ノードＮｎから接続許可応答メッセージが受信されたか否かが判別される。
【００８８】
そして、接続許可応答メッセージが受信された場合には（ステップＳ１１：ＹＥＳ）、ステップＳ１２に進み、接続許可応答メッセージが受信されていない場合には（ステップＳ１１：ＮＯ）、ステップＳ１６に進む。
【００８９】
ステップＳ１２では、上記接続処理監視タイマが起動中であるか否かが判別される。そして、接続処理監視タイマが起動中である場合には（ステップＳ１２：ＹＥＳ）、当該タイマが停止され（ステップＳ１３）、ステップＳ１４に進み、接続処理監視タイマが起動中でない場合には（ステップＳ１２：ＮＯ）、当該タイマが停止されることなくステップＳ１４に進む。
【００９０】
ステップＳ１４では、上記接続許可応答メッセージを送信した上流ノードＮｎに対してストリーム開始要求メッセージが送信される。
【００９１】
ステップＳ１５では、接続先紹介サーバ２０に対して自ノードのツリートポロジーへの参加報告メッセージが送信され、ステップＳ４に戻る。
【００９２】
ステップＳ１６では、上記接続要求メッセージを受信した上流ノードＮｎから接続拒否応答メッセージが受信されたか否かが判別される。
【００９３】
そして、接続拒否応答メッセージが受信された場合には（ステップＳ１６：ＹＥＳ）、ステップＳ１７に進み、接続拒否応答メッセージが受信されていない場合には（ステップＳ１６：ＮＯ）、ステップＳ２１に進む。
【００９４】
ステップＳ１７では、接続処理監視タイマがタイムアウトしたか否かが判別される。そして、接続処理監視タイマがタイムアウトしている（接続処理時間切れ）場合には（ステップＳ１７：ＹＥＳ）、ステップＳ１８に進み、タイムアウトしていない（接続処理の再試行可能）場合には（ステップＳ１７：ＮＯ）、ステップＳ２０に進む。
【００９５】
ステップＳ１８では、接続処理監視タイマが停止され、ステップＳ１９では、アプリケーションへ接続失敗通知がなされ、ステップＳ４に戻る。
【００９６】
ステップＳ２０では、自律的再接続事象が生起され、ステップＳ４に戻る。
【００９７】
ステップＳ２１では、放送局１０又は上流ノードＮｎからコンテンツパケットが受信されたか否かが判別される。そして、コンテンツパケットが受信された場合には（ステップＳ２１：ＹＥＳ）、ステップＳ２２に進み、コンテンツパケットが受信されていない場合には（ステップＳ２１：ＮＯ）、ステップＳ３１に進む。
【００９８】
ステップＳ２２では、受信されたコンテンツパケットがバッファメモリにおける該当するＳｅｑ番号のスロットに収納される。
【００９９】
ステップＳ２３では、例えば主記憶装置３０２で管理されている受信品質情報が更新される。例えば、ＣＰＵ３０４は、受信品質情報として、過去一分間の平均パケットレート、平均パケット損失率、パケット到着ゆらぎ等を計算し、過去に計算され記憶された受信品質情報を更新する。
【０１００】
ステップＳ２４では、今回、上記スロットに収納されたコンテンツパケットのＳｅｑ番号と、前回、スロットに収納されたコンテンツパケットのＳｅｑ番号とが比較され、その連続性が検査されることによりパケット損失が発生しているか否かが確認され、パケット損失が検出された場合には（ステップＳ２４：ＹＥＳ）、ステップＳ２７に進み、パケット損失が検出されない場合には（ステップＳ２４：ＮＯ）、ステップＳ２５に進む。
【０１０１】
ステップＳ２５では、自ノードに下流ノードＮｎが存在するか（自ノードに下流ノードＮｎが直接接続されているか）否かが判別される。そして、自ノードに下流ノードＮｎが存在する場合には（ステップＳ２５：ＹＥＳ）、ステップＳ２６に進み、自ノードに下流ノードＮｎが存在しない場合には（ステップＳ２５：ＮＯ）、ステップＳ４に戻る。
【０１０２】
ステップＳ２６では、自ノードに接続されている下流ノードＮｎに対して上記コンテンツパケットが転送（中継）され、ステップＳ４に戻る。
【０１０３】
ステップＳ２７では、自ノードが接続している上流ノードＮｎに対してパケット補完要求メッセージが送信される。
【０１０４】
ステップＳ２８では、自ノードに下流ノードＮｎが存在するか否かが判別される。そして、自ノードに下流ノードＮｎが存在する場合には（ステップＳ２８：ＹＥＳ）、ステップＳ２９に進み、自ノードに下流ノードＮｎが存在しない場合には（ステップＳ２８：ＮＯ）、ステップＳ４に戻る。
【０１０５】
ステップＳ２９では、上記パケット損失分に対して当該損失したパケットのＳｅｑ番号が付与されたダミーパケットが生成され、当該ダミーパケットが自ノードに接続されている下流ノードＮｎに対して送信される。
【０１０６】
ステップＳ３０では、自ノードに接続されている下流ノードＮｎに対して上記コンテンツパケットが転送（中継）され、ステップＳ４に戻る。なお、上流から受信したパケットについては、パケット損失の有無に関わらず下流ノードＮｎに中継送信される。
【０１０７】
ステップＳ３１では、コンテンツパケットの再生契機になったか否かが判別される。そして、コンテンツパケットの再生契機になった場合には（ステップＳ３１：ＹＥＳ）、バッファメモリから次に再生すべきコンテンツパケットが読み込まれ（ステップＳ３２）、当該パケットがデコーダに出力され、ビデオチップ３０７及び音源チップ３０８を介してコンテンツデータが再生される（ステップＳ３３）。一方、コンテンツパケットの再生契機になっていない場合には（ステップＳ３１：ＮＯ）、ステップＳ３４に進む。
【０１０８】
ステップＳ３４では、放送局１０又は上流ノードＮｎから補完パケットが受信されたか否かが判別される。そして、補完パケットが受信された場合には（ステップＳ３４：ＹＥＳ）、ステップＳ３５に進み、補完パケットが受信されていない場合には（ステップＳ３４：ＮＯ）、ステップＳ４１に進む。
【０１０９】
ステップＳ３５では、受信された補完パケットのＳｅｑ番号に該当するスロットの状態が確認され当該スロットが空（データ無し）であるか否かが判別される。そして、当該スロットが空でない場合には（ステップＳ３５：ＮＯ）、ステップＳ３６に進み、当該スロットが空である場合には（ステップＳ３５：ＹＥＳ）、ステップＳ３８に進む。
【０１１０】
ステップＳ３６では、空でない上記スロットにダミーパケットが格納されているか否かが判別される。そして、ダミーパケットが格納されていない（ダミーパケットでない、つまりコンテンツパケットである）場合には（ステップＳ３６：ＮＯ）、ステップＳ３９に進み、ダミーパケットが格納されている（ダミーパケットである）場合には（ステップＳ３６：ＹＥＳ）、当該ダミーパケットが廃棄（削除）され（ステップＳ３７）、ステップＳ３８に進む。
【０１１１】
ステップＳ３８では、上記受信された補完パケットがコンテンツパケットとして上記該当するスロットに収納される。
【０１１２】
ステップＳ３９では、自ノードに下流ノードＮｎが存在するか否かが判別される。そして、自ノードに下流ノードＮｎが存在する場合には（ステップＳ３９：ＹＥＳ）、ステップＳ４０に進み、自ノードに下流ノードＮｎが存在しない場合には（ステップＳ３９：ＮＯ）、ステップＳ４に戻る。
【０１１３】
ステップＳ４０では、自ノードに接続されている下流ノードＮｎに対して上記補完パケットが転送（中継）され、ステップＳ４に戻る。
【０１１４】
ステップＳ４１では、上流ノードＮｎからダミーパケットが受信されたか否かが判別される。そして、ダミーパケットが受信された場合には（ステップＳ４１：ＹＥＳ）、ステップＳ４２に進み、ダミーパケットが受信されていない場合には（ステップＳ４１：ＮＯ）、ステップＳ４６に進む。
【０１１５】
ステップＳ４２では、受信されたダミーパケットのＳｅｑ番号に該当するスロットが空であるか否かが判別される。そして、当該スロットが空でない場合には（ステップＳ４２：ＮＯ）、ステップＳ４４に進み、当該スロットが空である場合には（ステップＳ４２：ＹＥＳ）、ステップＳ４３に進む。
【０１１６】
ステップＳ４３では、上記受信されたダミーパケットが上記該当するスロットに収納される。
【０１１７】
ステップＳ４４では、自ノードに下流ノードＮｎが存在するか否かが判別される。そして、自ノードに下流ノードＮｎが存在する場合には（ステップＳ４４：ＹＥＳ）、ステップＳ４５に進み、自ノードに下流ノードＮｎが存在しない場合には（ステップＳ４４：ＮＯ）、ステップＳ４に戻る。
【０１１８】
ステップＳ４５では、自ノードに接続されている下流ノードＮｎに対して上記ダミーパケットが転送（中継）され、ステップＳ４に戻る。
【０１１９】
ステップＳ４６では、他のノードＮｎから接続要求メッセージが受信されたか否かが判別される。そして、接続要求メッセージが受信された場合には（ステップＳ４６：ＹＥＳ）、ステップＳ４７に進み、接続要求メッセージが受信されていない場合には（ステップＳ４６：ＮＯ）、ステップＳ５１に進む。
【０１２０】
ステップＳ４７では、自ノードに接続されている下流ノードＮｎの数が、自ノードの接続許容数（上限）に達しているか否かが判別される。そして、下流ノードＮｎの数が自ノードの接続許容数に達している場合には（ステップＳ４７：ＹＥＳ）、ステップＳ４８に進み、下流ノードＮｎの数が自ノードの接続許容数に達していない場合には（ステップＳ４７：ＮＯ）、ステップＳ４９に進む。
【０１２１】
ステップＳ４８では、上記接続要求メッセージを送信したノードＮｎに対して接続拒否応答メッセージが送信され、ステップＳ４に戻る。
【０１２２】
ステップＳ４９では、上記接続要求メッセージを送信したノードＮｎのノード情報が下流ノードのノード情報としてノード管理テーブルに追加登録される。
【０１２３】
ステップＳ５０では、上記接続要求メッセージを送信したノードＮｎに対して接続許可応答メッセージが送信され、ステップＳ４に戻る。
【０１２４】
こうして、当該接続要求メッセージを送信したノードＮｎは、自ノードに接続される新たな下流ノードＮｎとなる。
【０１２５】
ステップＳ５１では、自ノードに接続された下流ノードＮｎからストリーム開始要求メッセージが受信されたか否かが判別される。そして、ストリーム開始要求メッセージが受信された場合には（ステップＳ５１：ＹＥＳ）、ステップＳ５２に進み、ストリーム開始要求メッセージが受信されていない場合には（ステップＳ５１：ＮＯ）、ステップＳ５３に進む。
【０１２６】
ステップＳ５２では、ストリーム開始要求メッセージを送信した下流ノードＮｎに対してコンテンツパケットの転送（中継）が開始（ストリーミング開始）され、ステップＳ４に戻る。
【０１２７】
ステップＳ５３では、自ノードに接続されている下流ノードＮｎからストリーム停止要求メッセージが受信されたか否かが判別される。そして、ストリーム停止要求メッセージが受信された場合には（ステップＳ５３：ＹＥＳ）、ステップＳ５４に進み、ストリーム停止要求メッセージが受信されていない場合には（ステップＳ５３：ＮＯ）、ステップＳ５５に進む。
【０１２８】
ステップＳ５４では、上記下流ノードＮｎに対するコンテンツパケットの転送が停止（ストリーミング停止）され、ステップＳ４に戻る。
【０１２９】
ステップＳ５５では、自ノードに接続されている下流ノードＮｎから接続解除要求メッセージが受信されたか否かが判別される。そして、接続解除要求メッセージが受信された場合には（ステップＳ５５：ＹＥＳ）、ステップＳ５６に進み、接続解除要求メッセージが受信されていない場合には（ステップＳ５５：ＮＯ）、ステップＳ５７に進む。
【０１３０】
ステップＳ５６では、接続解除要求メッセージを送信した下流ノードＮｎのノード情報がノード管理テーブルから削除され、ステップＳ４に戻る。
【０１３１】
ステップＳ５７では、上述した受信品質情報に基づき、例えばストリーム中継品質（受信品質）が閾値を下回ったか否かが判別される。そして、ストリーム中継品質が閾値を下回ったことが検知された場合には（ステップＳ５７：ＹＥＳ）、ステップＳ５８に進み、ストリーム中継品質が閾値を下回っていない場合には（ステップＳ５７：ＮＯ）、ステップＳ６２に進む。
【０１３２】
ステップＳ５８では、自ノードが接続している上流ノードＮｎに対してストリーム停止要求メッセージが送信され、続いて、ステップＳ５９では、当該上流ノードＮｎに対して接続解除要求メッセージが送信される。
【０１３３】
ステップＳ６０では、接続先紹介サーバ２０に対して自ノードのトポロジーからの脱退報告メッセージが送信される。
【０１３４】
ステップＳ６１では、自律的再接続事象が生起され、ステップＳ４に戻る。
【０１３５】
ステップＳ６２では、バッファメモリの監視契機になったか否かが判別される。そして、バッファメモリの監視契機になった場合には（ステップＳ６２：ＹＥＳ）、ステップＳ６３に進み、バッファメモリの監視契機になっていない場合には（ステップＳ６２：ＮＯ）、ステップＳ６６に進む。
【０１３６】
ステップＳ６３では、生存期間を経過したダミーパケットが検出されたか否かが判別される。
【０１３７】
ここで、ＣＰＵ３０４は、バッファメモリ監視プログラムにしたがって、定期的に（例えば、１０秒に１回程度の頻度で）バッファメモリを参照して、生存期間を超過したダミーパケットが存在するか否かを確認することになる。
【０１３８】
例えば、ダミーパケットのＡｇｉｎｇ時間として、コンテンツパケットの損失検出時刻から上記待機時間（例えば、１０秒）後の時刻が記述される場合、当該記述された時刻を経過したダミーパケットが、上記生存期間を超過したダミーパケットということになる。
【０１３９】
また、Ａｇｉｎｇ時間として、パケットの損失検出時刻と上記待機時間（例えば、１０秒）が記述される場合、Ａｇｉｎｇ時間として記述された損失検出時刻から上記待機時間後の時刻が当該ＣＰＵ３０４により計算され、当該計算された時刻を経過したダミーパケットが、上記生存期間を超過したダミーパケットということになる。
【０１４０】
また、上述したように、上記待機時間を一定範囲でランダムに選択する場合、Ａｇｉｎｇ時間として記述された損失検出時刻から当該選択された待機時間後の時刻が当該ＣＰＵ３０４により計算され、当該計算された時刻を経過したダミーパケットが、上記生存期間を超過したダミーパケットということになる。
【０１４１】
また、上述したように、上記待機時間をダミーパケットを受信したノードＮｎの階層レベルに応じた時間とする場合、当該階層レベルに応じた待機時間が当該ＣＰＵ３０４により算出され、さらに、Ａｇｉｎｇ時間として記述された損失検出時刻から上記算出された待機時間後の時刻が当該ＣＰＵ３０４により計算され、当該計算された時刻を経過したダミーパケットが、上記生存期間を超過したダミーパケットということになる。
【０１４２】
なお、上記生存期間を決めるための上記時刻の計算は、バッファメモリの監視契機になったときに行われても良いし、ダミーパケット受信後の任意のタイミング（例えば、ダミーパケットが受信された時点）に行われても良い。当該計算がダミーパケット受信後の任意のタイミングで行われる場合、計算された時刻がダミーパケットのＳｅｑ番号に対応付けてメモリに記憶され、バッファメモリの監視契機になったときにＣＰＵ３０４により参照されることになる。
【０１４３】
そして、生存期間を経過したダミーパケットが検出された場合には（ステップＳ６３：ＹＥＳ）、ステップＳ６４に進み、生存期間を経過したダミーパケットが検出されない場合には（ステップＳ６３：ＮＯ）、ステップＳ４に戻る。
【０１４４】
ステップＳ６４では、上記検出されたダミーパケットが廃棄される。
【０１４５】
ステップＳ６５では、自ノードが接続している上流ノードＮｎに対してパケット補完要求メッセージが送信され、ステップＳ４に戻る。
【０１４６】
ステップＳ６６では、自ノードに接続されている下流ノードＮｎからパケット補完要求メッセージが受信されたか否かが判別される。そして、パケット補完要求メッセージが受信された場合には（ステップＳ６６：ＹＥＳ）、ステップＳ６７に進み、パケット補完要求メッセージが受信されていない場合には（ステップＳ６６：ＮＯ）、ステップＳ７１に進む。
【０１４７】
ステップＳ６７では、バッファメモリから、上記パケット補完要求に該当するコンテンツパケットが検索され、ステップＳ６８では、該当するコンテンツパケットが発見されたか否かが判別される。そして、該当するコンテンツパケットが発見された場合には（ステップＳ６８：ＹＥＳ）、当該コンテンツパケットが、放送局１０に接続されている下流ノードＮｎに対して、補完パケットとして送信され（ステップＳ６９）、ステップＳ４に戻る。一方、該当するコンテンツパケットが発見されない場合には（ステップＳ６８：ＮＯ）、自ノードに接続されている上流ノードＮｎに対してパケット補完要求メッセージが転送され（ステップＳ７０）、ステップＳ４に戻る。
【０１４８】
ステップＳ７１では、例えばユーザ入力用リモコン３１０を介してユーザからの脱退要求があったか否かが判別される。そして、ユーザからの脱退要求があった場合には（ステップＳ７１：ＹＥＳ）、ステップＳ７２に進み、ユーザからの脱退要求がない場合には（ステップＳ７１：ＮＯ）、ステップＳ４に戻る。
【０１４９】
ステップＳ７２では、自ノードが接続している上流ノードＮｎに対してストリーム停止要求メッセージが送信され、ステップＳ７３では、当該上流ノードＮｎに対して接続解除要求メッセージが送信される。こうして、自ノードはツリートポロジーから脱退することになる。
【０１５０】
そして、ステップＳ７４では、接続先紹介サーバ２０に対して自ノードのトポロジーからの脱退報告メッセージが送信され、ステップＳ４に戻る。
【０１５１】
（放送局１０の処理）
次に、図１２を参照して、放送局１０におけるＣＰＵ１０４の処理について説明する。
図１２は、放送局１０におけるＣＰＵ１０４により実行される処理を示すフローチャートである。
【０１５２】
図１２の処理は、主電源１０１のオンにより放送局１０が起動することにより開始される。当該処理が開始されると、ステップＳ１０１では、放送局１０における各種プログラムが初期化される。
【０１５３】
ステップＳ１０２では、放送運営者から放送開始又は停止要求があったか否かが判別される。放送開始又は停止要求があった場合には（ステップＳ１０２：ＹＥＳ）、ステップＳ１０３に進み、放送開始又は停止要求がない場合には（ステップＳ１０２：ＮＯ）、ステップＳ１０５に進む。
【０１５４】
ステップＳ１０３では、放送開始又は停止要求に応じて、コンテンツパケットの生成処理が開始又は停止される。
【０１５５】
コンテンツパケットの生成処理が開始されると、ハードディスク装置１０３に記録されたコンテンツデータに対して読み出しアクセスがなされ、システムタイマと同期が取られながら、コンテンツパケットが生成され、当該パケットがバッファメモリに格納される。一方、コンテンツパケットの生成処理の停止時には、上記ハードディスク装置１０３に記録されたコンテンツデータに対する読み出しアクセスが停止され、バッファメモリがクリアされる。
【０１５６】
ステップＳ１０４では、放送局１０の主電源１０１がオフになったか否かが判別される。そして、主電源１０１がオフになった場合には（ステップＳ１０４：ＹＥＳ）、各種プログラムが終了され、当該処理が終了する。一方、主電源１０１がオフになっていない場合には（ステップＳ１０４：ＮＯ）、ステップＳ１０２に戻る。
【０１５７】
ステップＳ１０５では、放送局１０に接続されている下流ノードＮｎから接続要求又は接続解除要求メッセージが受信されたか否かが判別される。そして、接続要求又は接続解除要求メッセージが受信された場合には（ステップＳ１０５：ＹＥＳ）、ステップＳ１０６に進み、接続要求又は接続解除要求メッセージが受信されない場合には（ステップＳ１０５：ＮＯ）、ステップＳ１０７に進む。
【０１５８】
ステップＳ１０６では、下流ノードＮｎのノード情報がノード管理テーブルに追加登録又は当該ノード情報がノード管理テーブルから削除される。
【０１５９】
ステップＳ１０７では、放送局１０に接続されている下流ノードＮｎからストリーム開始要求又はストリーム停止要求メッセージが受信されたか否かが判別される。そして、ストリーム開始要求又はストリーム停止要求メッセージが受信された場合には（ステップＳ１０７：ＹＥＳ）、ステップＳ１０８に進み、ストリーム開始要求又はストリーム停止要求メッセージが受信されない場合には（ステップＳ１０７：ＮＯ）、ステップＳ１０９に進む。
【０１６０】
ステップＳ１０８では、下流ノードＮｎに対してコンテンツパケットの転送が開始又は停止され、ステップＳ１０４に戻る。
【０１６１】
ステップＳ１０９では、放送局１０に接続されている下流ノードＮｎからパケット補完要求メッセージが受信されたか否かが判別される。そして、パケット補完要求メッセージが受信された場合には（ステップＳ１０９：ＹＥＳ）、バッファメモリから、パケット補完要求に該当するコンテンツパケットが検索され、当該コンテンツパケットが、放送局１０に接続されている下流ノードＮｎに対して、補完パケットとして送信され（ステップＳ１１０）、ステップＳ１０４に戻る。一方、パケット補完要求メッセージが受信されていない場合には（ステップＳ１０９：ＮＯ）、ステップＳ１０４に戻る。
【０１６２】
（接続先紹介サーバ２０の処理）
次に、図１３を参照して、接続先紹介サーバ２０におけるＣＰＵ２０４の処理について説明する。
図１３は、接続先紹介サーバ２０におけるＣＰＵ２０４により実行される処理を示すフローチャートである。
【０１６３】
図１３の処理は、主電源２０１のオンにより接続先紹介サーバ２０が起動することにより開始される。当該処理が開始されると、ステップＳ２０１では、接続先紹介サーバ２０における各種プログラムが初期化される。
【０１６４】
ステップＳ２０２では、放送局１０から登録要求又は削除要求メッセージが受信されたか否かが判別される。そして、登録要求又は削除要求メッセージが受信された場合には（ステップＳ２０２：ＹＥＳ）、ステップＳ２０３に進み、登録要求及び削除要求メッセージが受信されない場合には（ステップＳ２０２：ＮＯ）、ステップＳ２０６に進む。
【０１６５】
ステップＳ２０３では、上記登録要求メッセージに含まれる所在情報等が、放送チャンネル情報に対応付けられて放送局管理データベースに登録される。又は、上記削除要求メッセージに含まれる所在情報等が放送局管理データベースから削除される。
【０１６６】
ステップＳ２０４では、当該所在情報が登録された放送局１０に対応する放送チャンネル情報がトポロジーデータベースに登録される。又は、当該放送チャンネル情報がトポロジーデータベースから削除される。
【０１６７】
ステップＳ２０５では、接続先紹介サービスが終了したか否かが判別される。そして、接続先紹介サービスが終了した場合には（ステップＳ２０５：ＹＥＳ）、当該処理が終了し、接続先紹介サービスが終了しない場合には（ステップＳ２０５：ＮＯ）、ステップＳ２０２に戻る。
【０１６８】
ステップＳ２０６では、ノードＮｎから接続先紹介要求メッセージが受信されたか否かが判別される。そして、接続先紹介要求メッセージが受信された場合には（ステップＳ２０６：ＹＥＳ）、ステップＳ２０７に進み、接続先紹介要求メッセージが受信されない場合には（ステップＳ２０６：ＮＯ）、ステップＳ２０９に進む。
【０１６９】
ステップ２０７では、トポロジーデータベースのトポロジー管理情報から、接続先候補が検索され、検索された１以上の接続先候補のノード情報が取得される。
【０１７０】
ステップＳ２０８では、上記取得された接続先候補のノード情報を含む接続先候補紹介メッセージが、接続先紹介要求メッセージの送信元のノードＮｎに対して返信され、ステップＳ２０５に戻る。
【０１７１】
ステップＳ２０９では、ノードＮｎからトポロジー参加報告又は脱退報告メッセージが受信された否かが判別される。そして、トポロジー参加報告又は脱退報告メッセージが受信された場合には（ステップＳ２０９：ＹＥＳ）、ステップＳ２１０に進み、トポロジー参加報告及び脱退報告メッセージが受信されない場合には（ステップＳ２０９：ＮＯ）、ステップＳ２０５に戻る。
【０１７２】
ステップＳ２１０では、トポロジー参加報告又は脱退報告メッセージにしたがってトポロジーデータベースに登録されたトポロジー管理情報が更新され、ステップＳ２０５に戻る。これにより、トポロジーの変動が反映される。
【０１７３】
以上説明したように上記実施形態によれば、放送局１０から放送されたコンテンツパケットの損失を最初に検出したノードＮｎが、損失されたパケットを補完するためのパケット補完要求を放送局１０又はその上流ノードＮｎに行い、且つ、パケット損失の連鎖的な検出を抑制するためのダミーパケットを下流方向へ（例えば最下位階層のノードＮｎに至るまで）伝播させ、一方でダミーパケットを受信したノードＮｎではダミーパケットの生存期間（待機時間）が到来するまでパケット補完要求を上流ノードＮｎに行うことを留保するように構成したので、パケット損失事象が下流方向へ伝播することにより生じるパケット補完要求の連鎖的送出を回避し、ネットワークに対する過剰なトラフィックを防止でき、特定のノードＮｎに対するパケット補完要求の集中を回避することができる。
【０１７４】
また、ダミーパケットを受信したノードＮｎが、パケット補完要求を行うまでの待機時間を一定範囲でランダムに決めたり、当該ノードＮｎの階層レベルに応じた時間に決めるように構成することにより、当該待機時間のタイムアウトが同期して短時間に集中してパケット補完要求が行われることを回避することができる。
【図面の簡単な説明】
【０１７５】
【図１】本実施形態に係るツリー型放送システムにおける各ノード装置の接続態様の一例を示す図である。
【図２】ノードＮ１２がツリー型放送システムＳへの参加する際の様子を示した概念図である。
【図３】放送局１０の概要構成例を示す図である。
【図４】接続先紹介サーバ２０の概要構成例を示す図である。
【図５】ノードＮｎの概要構成例を示す図である。
【図６】バッファメモリの構造例を示す図である。
【図７】ダミーパケットが送信される様子を示す概念図である。
【図８】ノードＮｎにおけるＣＰＵ３０４により実行される処理を示すフローチャートである。
【図９】ノードＮｎにおけるＣＰＵ３０４により実行される処理を示すフローチャートである。
【図１０】ノードＮｎにおけるＣＰＵ３０４により実行される処理を示すフローチャートである。
【図１１】ノードＮｎにおけるＣＰＵ３０４により実行される処理を示すフローチャートである。
【図１２】放送局１０におけるＣＰＵ１０４により実行される処理を示すフローチャートである。
【図１３】接続先紹介サーバ２０におけるＣＰＵ２０４により実行される処理を示すフローチャートである。
【符号の説明】
【０１７６】
８  ネットワーク
９  オーバーレイネットワーク
１０  放送局
２０  接続先紹介サーバ
１０１，２０１，３０１ａ  主電源
３０１ｂ  補助電源
１０２，２０２，３０２  主記憶装置
１０３，２０３，３０３  ハードディスク装置
１０４，２０４，３０４  ＣＰＵ
１０５，２０５，３０５  ネットワークインタフェース
１０６，２０６，３０６  周辺機器制御チップ
１０７，２０７，３０７  ビデオチップ
１０８，３０８  音源チップ
１０９，２０８  キーボード
１１０，２０９  マウス
１１１，２１０  ディスプレイ
１１２，３１２  内蔵スピーカ
１１３，２１１，３１３  システムバス
１１４，２１２，３１４  ルータ
３０９  赤外線ポート
３１０  ユーザ入力用リモコン
３１１  内蔵ディスプレイ
Ｎｎ  ノード
Ｓ  ツリー型放送システム
【図１】
0005092877.tif 000002
【図２】
0005092877.tif 000003
【図３】
0005092877.tif 000004
【図４】
0005092877.tif 000005
【図５】
0005092877.tif 000006
【図６】
0005092877.tif 000007
【図７】
0005092877.tif 000008
【図８】
0005092877.tif 000009
【図９】
0005092877.tif 000010
【図１０】
0005092877.tif 000011
【図１１】
0005092877.tif 000012
【図１２】
0005092877.tif 000013
【図１３】
0005092877.tif 000014