以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施形態は、P2Pを用いたツリー構造によるコンテンツ配信システムであって、放送形式でコンテンツ配信装置から配信されるコンテンツデータを、ツリー状階層構造を構成する端末装置がP2Pを用いて受信する放送形式のコンテンツ配信システムに対して本発明を適用した場合の実施形態である。
[1.コンテンツ配信システムの構成等]
まず、図1を参照して、コンテンツ配信システムSの概要構成等について説明する。
図1は、本実施形態に係るコンテンツ配信システムSの概要構成例を示す図である。図1に示すように、本実施形態に係るコンテンツ配信システムSは、放送形式のコンテンツ配信システムであり、複数のコンテンツデータをそれぞれ別個にストリーミング配信するための複数の配信チャンネル(以下、単に「チャンネル」と呼ぶ、)を有している。たとえば、1チャンネルは、コンテンツ配信装置1を頂点として複数の端末装置2a1,2a2,2b1〜2b4,2c1〜2c8が論理的にツリー状階層構造で接続されており、コンテンツ配信装置1からコンテンツデータが当該ツリー構造の上層から下層にかけてストリーミング配信されるように構成される。他のチャンネル(2チャンネル〜nチャンネル)においても、同様な構成をとる。
また、端末装置2a1,2a2,2b1〜2b4,2c1〜2c8(図4では、端末装置2d1、2d2、2e1〜2e4、2f1)のいずれかの端末装置又はすべての端末装置を示す場合には、便宜上、端末装置2という場合がある。
また、コンテンツ配信システムSには、接続管理装置3を有しており、この接続管理装置3が各チャンネルのツリー状階層構造を管理している。
コンテンツ配信装置1、端末装置2a1,2a2,2b1〜2b4,2c1〜2c8、接続管理装置3には、各々IPアドレスが割り当てられており、これら装置は、ネットワークの一例としてのインターネット4にルータ10等を介して接続されている。すなわち、目的の接続先端末装置のIPアドレスを宛先IPアドレス、自装置のIPアドレスを送信元IPアドレスとしたヘッダを含むパケットを送信することによって通信接続が可能となっている。
なお、接続管理装置3をコンテンツ配信装置1の内部に有することとしてもよい。この場合には接続管理装置3にはIPアドレスは割り当てなくてもよく、コンテンツ配信装置1のIPアドレスと共用するようにしてもよい。また、コンテンツ配信装置1は、コンテンツ配信システムSを構成する複数のチャンネル(ここでは、1チャンネル〜nチャンネルとする。)のコンテンツデータを配信するものとしてもよく、一方でそれぞれのチャンネル毎にコンテンツ配信装置1が設けられるようにしてもよい。本実施形態においては、それぞれのチャンネル毎にコンテンツ配信装置1を設けるようにしており、第1コンテンツ配信装置1a1が1チャンネルのコンテンツデータをストリーミング配信し、第2コンテンツ配信装置1a2が2チャンネルのコンテンツデータをストリーミング配信するものとして説明する(図4参照)。
また、第1階層の端末装置2a1,2a2と2d1,2d2は便宜上それぞれ端末装置2a、2dと、第2階層の端末装置2b1〜2b4と2e1〜2e4は便宜上それぞれ端末装置2b、2eと、第3階層の端末装置2c1〜2c8、2f1は便宜上それぞれ端末装置2c、2fという場合がある。
このコンテンツ配信システムSは、第1及び第2コンテンツ配信装置1a1、1a2を頂点(ここでは、便宜上第0階層とする。)として複数の端末装置2がツリー状階層構造で多層に論理接続されるように接続管理装置3によって管理される。なお、本実施形態においては、ツリー状階層構造として説明するが、これに限られず、複数の端末装置2がチェーン状の階層構造で多層に論理接続されるようにしてもよい。
接続管理装置3は、コンテンツ配信システムSに参加していない端末装置2、言い換えればツリー状階層構造を構成していない端末装置2から接続先紹介要求を受信すると、コンテンツ配信システムSのツリー状階層構造の状態等に基づいて、その端末装置2がストリーミング配信を受けるための上流の端末装置として接続する接続先候補(コンテンツ配信装置1又は端末装置2)を選択する。そして、このように選択した接続先候補の所在情報(接続先候補のIPアドレスやポート番号など)及び通信プロトコル等を通知する。
なお、コンテンツ配信システムSにおいて、すでに通信プロトコルやポート番号が固定されているときには、端末装置2へのポート番号及び通信プロトコルは通知しなくてもよい。ここで、通信プロトコルとして、MMS(Microsoft Media Server)プロトコル、RTSP(Real Time Streaming Protocol)等が用いられる。また、コンテンツデータの形式として、ASF(Advanced Streaming Format)、WMA(Windows(登録商標) Media Audio)、WMV(Windows(登録商標) Media Video)等が用いられる。
端末装置2は、接続管理装置3から接続先候補の所在情報を受信すると、そのIPアドレスの接続先候補に対して、コンテンツ配信システムSへの参加(接続)を要求し、これにより端末装置2がコンテンツ配信システムSにおける階層構造へ組み込まれる。すなわち、端末装置2はコンテンツ配信装置1から配信されるコンテンツデータを受信可能となる。
コンテンツ配信システムSは、このように端末装置2が次々と参加することによって、コンテンツ配信装置1を頂点として複数の端末装置2がツリー状階層構造で多層に論理接続される。そして、コンテンツ配信装置1から配信されるコンテンツデータは、端末装置2の中継機能により順次下層の端末装置2へ中継されて複数の端末装置2にストリーミング配信される。
すなわち、図1に示すように、1チャンネルにおいては、コンテンツ配信装置1から端末装置2a1,2a2(第1層の端末装置)へコンテンツデータが送信され、端末装置2a1,2a2はコンテンツデータを受信すると、下層の端末装置2b1〜2b4(第2階層の端末装置)へ受信したコンテンツデータを順次中継する。端末装置2b1〜2b4はコンテンツデータを受信すると、下層の端末装置,2c1〜2c8(第3階層の端末装置)へ受信したコンテンツデータを順次中継する。
なお、端末装置2は、組み込まれた階層構造の位置の上層の端末装置2又はコンテンツ配信装置1の所在情報と、その位置の下層の端末装置2の所在情報とを後述の主記憶装置207に記憶しており、このように記憶した所在情報に基づいて、コンテンツデータの中継を行なうようにしている。また、配信されるコンテンツデータは、複数のパケットに分割されて順次配信されるものであり、このようにパケットに分割されて配信されるデータをコンテンツパケットという。
このように端末装置2へ配信されるコンテンツデータは、コンテンツ配信システムSに参加しているすべての端末装置2へ配信される。配信されるコンテンツデータには、音楽や映画などコンテンツのデータのほか、再生時刻の情報(以下、「再生時刻データ」という。)が含まれている。そして、コンテンツデータを受信した複数の端末装置2は、順次送信されるコンテンツデータの再生を再生時刻データに基づいて行なう。
このようにして、コンテンツ配信システムSは、コンテンツ配信装置1から送信されたコンテンツデータが複数の端末装置2にストリーミング配信され、複数の端末装置2において同時刻にコンテンツを再生することができる。すなわち、P2Pを用いて複数の端末装置2への放送形式のストリーミング配信を実現している。
上述のように本実施形態におけるコンテンツ配信システムSは、複数のコンテンツデータをそれぞれストリーミング配信する複数のチャンネルを有している。端末装置2のユーザは、所望のチャンネルを選択し、選択したチャンネルにおける自端末装置2の接続先装置(以下、「接続先候補」とする。)を接続管理装置3から取得する。そして、その接続先候補に接続することによって所望のチャンネルの階層構造に参加し、この階層構造における自端末装置2の上層に位置する装置からコンテンツデータを受信し、再生(以下、「視聴」ともいう。)する。
このように端末装置2があるチャンネルの階層構造に参加した後、この端末装置2のユーザがチャンネルを切替える場合がある。ユーザが現在視聴中のチャンネルとは異なるチャンネルを選択してチャンネル切替え(以下、「ザッピング」ともいう。)を行った場合、従来のコンテンツ配信システムSにおける端末装置2は、参加しているチャンネルの階層構造から脱退し、ユーザにより選択されたチャンネルの階層構造への参加を上述の手順で行っていた。
従来では、参加しているあるチャンネルの階層構造から別のチャンネル階層構造へ参加する際に、接続管理装置3から接続先候補の情報を受け取るための処理、及びその接続先候補へ接続するためのNAT(network Address Translation)越え等の処理を行うといった一連の接続処理を行っていた。そのため、従来のコンテンツ配信システムSにおける端末装置2では、切替え先のチャンネルのコンテンツデータを受信して再生するまでの時間、コンテンツデータが再生されない状態が発生していた。このようなコンテンツデータが再生されない期間(空白期間)は端末装置2のユーザに不快感を与える要因となる。
そこで、本実施形態における端末装置2においては、地理的に近い場所に設置されている複数の他の端末装置(以下、「隣接端末装置」という。)2との間で定期的に無線通信を行うことにより、複数の隣接端末装置2のネットワーク上における所在情報を含む、当該隣接端末装置2に関する様々な情報(以下、「端末情報」という。)を取得すると共に、ユーザがザッピングを行う場合には、この端末情報を参照して、ユーザが選択したチャンネルで配信されているコンテンツデータを受信中の隣接端末装置2を検索し、該当した隣接端末装置2から無線通信により所定期間コンテンツデータを受信するようにしている。
[2.チャンネル切り替え方式の説明]
そして、この端末装置2では、上記隣接端末装置2から無線通信によりコンテンツデータを受信している間に、そのコンテンツデータを送信している隣接端末装置2の下流側に接続可能であるか否かを判断すると共に、接続可能であると判断した場合には、ザッピングのための処理を行い、その処理が終了した後に、コンテンツデータを送信している隣接端末装置2下流側に接続して、有線通信によりコンテンツデータの受信を行うようにしている。
図2は、本実施形態における各端末装置2の有線、及び、無線通信による通信形態を示す説明図である。図2に示すように、各端末装置2は、それぞれ有線の電話回線ケーブル等に接続されており、この電話回線ケーブル等を介してユーザが所望するチャンネルのコンテンツデータを配信しているコンテンツ配信装置1又は他の端末装置2と接続することにより、接続したコンテンツ配信装置1又は他の端末装置2から配信される所望のコンテンツデータを受信して視聴できるように構成している。
さらに、各端末装置2は、定期的に(例えば、1分おきに)無線LAN等の電波を用いて近隣の端末装置2同士間で相互に無線通信を行うことにより、自端末装置2に関する情報を端末情報として隣接端末装置2へ送信すると共に、複数の隣接端末装置2から端末情報を受信するようにしている。
そして、複数の隣接端末装置2から送信されてくる隣接端末情報は、各端末装置2内部に順次記憶され、新たな端末情報が送信されてくるたびに更新される。
図3は、端末装置2に記憶された隣接端末情報の一例を示す説明図であり、ここでは、7つの隣接端末装置2に関する端末情報を示している。
図3に示すように、端末情報は、装置番号と、所在情報と、接続中チャンネルと、下流接続可否と、ポップ数と、RTT(Round Trip Time)という6つの項目に別れており、各端末装置では、この6つの項目を各隣接端末装置2毎にそれぞれ対応させて記憶、管理するようにしている。
ここで、端末番号とは、各端末装置2のそれぞれ割り当てられたユニークな番号である。
また、所在情報とは、各隣接端末装置2のネットワーク上における所在地を示す情報であり、隣接端末装置2が優先通信で使用しているローカルアドレスに割り当てられているNATルータにおける外側(インターネット側)のアドアレス(グローバルアドレス)である。
また、接続中チャンネルは、隣接端末装置が現在接続しているチャンネルのチャンネル番号を示す情報である。
また、下流接続可否は、各隣接端末装置2が、新たな他の端末装置2を自端末装置2の階層構造における下流側に接続可能な状態であるか否かを示すフラグである。
また、ポップ数は、自端末装置2がネットワーク上において隣接端末装置2との間で情報を送受信する場合に経由するルータ10の数を示す情報である。
また、RTTは、自端末装置2から隣接端末装置へパケットを送信してから、再び自端末装置2に戻ってくるまでの時間を示す情報である。
ここで、ポップ数とRTTに関しては、端末装置2が隣接端末情報として得た所在情報を使って、隣接端末装置2との間で有線通信を介して計測用パケットを送受信することで測定する。
そして、各端末装置2では、ユーザによるチャンネル切替え操作があったとき、のこの端末情報に基づいて、ユーザが選択したチャンネルに接続している隣接端末装置2を検索し、この検索にヒットした隣接端末装置2との間で有線通信による接続が確立するまでの間、当該検索にヒットした隣接端末装置2から無線通信によりコンテンツデータを受信することによって、ユーザがザッピングのための操作を行ってからユーザが選択したチャンネルで配信されているコンテンツデータを再生するまでの時間を可及的に短くするようにしている。
ここで、図4及び図5を参照して、本実施形態におけるチャンネル切り替え(ザッピング)について、さらに具体的に説明する。
図4は、1チャンネルのコンテンツデータがストリーミング配信されている階層構造と、2チャンネルのコンテンツデータがストリーミング配信されている階層構造とを示す説明図であり、図5は、端末装置2で行われるザッピングを時間の流れでみた説明図である。
図4に示すように、1チャンネル側では、第1コンテンツ配信装置1a1(0階層)を頂点とした階層構造が構築されており、この第1コンテンツ配信装置1a1に1階層を構成する端末装置2a1、2a2が接続されている。また、端末装置2a1には2階層を構成する端末装置2b1、2b2が接続され、端末装置2a2には2階層を構成する端末装置2b3、2b4が接続されている。
そして、2階層の端末装置2b4の下流側には、3階層を構成する端末装置2c1が接続されており、ここでは、この端末装置2c1をザッピング前の自端末装置2として説明する。
また、2チャンネル側では、第2コンテンツ配信装置1a2(0階層)を頂点とした階層構造が構築されており、この第2コンテンツ配信装置1a2に1階層を構成する端末装置2d1、2d2が接続されている。また、端末装置2d1には2階層を構成する端末装置2e1、2e2が接続され、端末装置2d2には2階層を構成する端末装置2e3、2e4が接続されている。なお、2チャンネル側において2階層の端末装置2e1の下流に接続されている端末装置2f1は、ザッピング前の自端末装置2c1がザッピングを行うことにより、2チャンネル側の階層構造に参加した状態を示すものであり、ここではザッピング後の自端末装置2f1と呼ぶ。
いま、1チャンネルの階層構造に参加して第1コンテンツ配信装置1a1から配信されているコンテンツデータを視聴しているザッピング前の自端末装置2c1のユーザが、2チャンネルを選択する操作を行ったとする。
ここで、ザッピング前の自端末装置2c1は、現在2チャンネルの第2コンテンツ配信装置1a2から配信されているコンテンツデータを受信中の隣接端末措置2が存在するか否かを判定する。
このとき、2チャンネルのコンテンツデータを受信している近接端末措置2が存在するか否かは、図3に示した端末情報を判断基準として用いることにより判断することができる。
すなわち、ザッピング前の自端末装置2c1は、まず、端末情報における接続中チャンネルの項目を参照して、現在2チャンネルのコンテンツデータを受信中の隣接端末装置2が存在するか否かの判断を行う。
図4では、2チャンネル側の階層構造における2階層の端末装置2e1が、ザッピング前の自端末装置2c1の隣接端末装置2であって、現在2チャンネルのコンテンツデータを受信中の端末装置2であるものとする。
そして図4に示すように、2チャンネルのコンテンツデータを受信中の隣接端末装置2e1が存在した場合には、その隣接端末装置2e1との間で無線通信を開始して、その隣接端末装置2e1から2チャンネルのコンテンツデータを、無線通信を用いて受信して再生するようにしている。
すなわち、ザッピング前の自端末装置2c1は、隣接端末装置2e1に対して、2チャンネルのコンテンツデータの無線通信によるストリーム送信依頼を要求する。このストリーム送信依頼を受信した隣接端末装置2e1は、無線通信の空きチャンネルをストリーム送信用にアサイン(割り当て)してストリーム送信要求を送信してきた端末装置2c1との間で無線通信による接続を確立する。
そして、ストリーム送信要求を送信してきた端末装置2c1へ、現在上流に接続している端末装置2d1から有線通信を介して受信している2チャンネルのコンテンツデータの送信を開始する。
そして、隣接端末装置2e1から2チャンネルのコンテンツデータを無線通信により受信した自端末装置2c1は、そのコンテンツデータをデコーダによりデコードして再生する。
なお、この自端末装置2c1は、ユーザにより選択されたチャンネル(ここでは、2チャンネル)のコンテンツデータを受信中の隣接端末装置2e1が存在すると判断した時点で、その隣接端末装置2eとの間で有線通信による接続を行うために必要なNAT越えの処理を事前に行うようにしている。
ここで、NAT越えの処理とは、隣接端末装置2e1が接続しているルータ10の外部を宛先として自端末装置2c1が隣接端末装置2e1へIPパケットを送信できる状態にすると共に、自端末装置2c1が接続しているルータ10の外部を宛先として隣接端末装置2e1が自端末装置2c1へIPパケットを送信できる状態にするための処理である。すなわち、この処理は、NATルータのNATテーブルにこれから有線通信で通信を行う2つの端末装置2間(ここでは、自端末装置2c1と隣接端末装置2e1との間)の通信コネクションを記憶させる処理であり、たとえば、UDP(User Datagram Protocol)を用いて通信する場合には、自端末装置2c1と隣接端末装置2e1が同時に相手側の端末装置2へIPパケットを送信することで上記目的を達するUDPHolePunchingと呼ばれる技術を用いる。
その後、図5に示すように、自端末装置2c1は、無線通信によるコンテンツデータの受信が所定(固定)時間継続されている間にユーザによるザッピングの操作が行われなかった場合には、現在受信しているコンテンツデータの送信元である近隣端末装置2e1との間で有線通信を行うための接続処理を開始する。
このように、本実施形態の端末装置2では、無線通信によるコンテンツデータの受信が所定時間継続した後に、近隣端末装置2e1との間で有線通信を行うための接続処理を開始することにより、頻繁にザッピングが行われることに起因して階層構造の論理接続関係が不安定になることを防止するようにしている。
ここで、自端末装置2c1は、再度、図3に示す端末情報を参照して、現在無線通信によりコンテンツデータのストリーム配信を受けている隣接端末装置2e1が、階層構造における下流側に接続可能な状態であるか否かの判断を行う。
すなわち、自端末装置2c1は、隣接端末装置2e1に関する下流接続可否の項目を参照し、当該隣接端末装置2e1の下流接続可否を示すフラグがOKを示すものであるか否かを判断する。
このとき、下流接続可否を示すフラグがOKを示していると判断した場合には、さらに、その隣接端末装置2に関するポップ数とRTTとを参照して自端末装置2c1とのネットワーク上における近接度が高いか否かの判断を行う。
ここでは、ポップ数が所定の閾値以下であり、且つ、RTTが所定の閾値以下であった場合に、ネットワーク上における近接度が高いと判断する。
その結果、ポップ数が所定の閾値以下であり、且つ、RTTが所定の閾値以下であると判断した場合に、その隣接端末装置2が、現在2チャンネルの第2コンテンツ配信装置1a2から配信されているコンテンツデータを受信中で、その下流側に接続可能な隣接端末措置2であると判断して、隣接端末装置2e1との有線通信による接続を確立するための処理を開始する。
そして、この有線通信による接続を確立するための処理が終了すると、ザッピング前の自端末装置2c1は、図4に示すように、ザッピング後の自端末装置2f1として隣接端末装置2e1との有線通信による接続が確立する。その後、ザッピング後の端末装置2f1は、隣接端末装置2e1に対して、有線通信によるコンテンツデータのストリーム送信依頼を送信する。
隣接端末装置2e1は、このストリーム送信依頼を受信すると、ストリーム送信依頼を送信してきた端末装置2f1を下流に接続した端末装置2として登録し、図5に示すように、その端末装置2f1へ現在上流に接続している端末装置2d1から受信している2チャンネルのコンテンツデータを有線通信により送信する。
そして、有線通信によりこのコンテンツデータを受信し始めると、ザッピング後の自端末装置2f1は、受信したコンテンツデータをデコードして再生する。
このように、本実施形態の端末装置2によれば、ユーザによるザッピングの操作が行われてから、ユーザが選択したチャンネルの階層構造に参加して有線通信によりコンテンツデータを受信して再生するまでの間、そのコンテンツデータを上流の端末装置2から受信中の隣接端末装置2から無線通信により受信して再生するように構成しているため、ユーザがザッピングの操作をしてから、そのユーザが選択したチャンネルのコンテンツデータを再生するまでの時間を可及的に短縮することができ、スムーズなザッピングを行うことができる。
しかも、この端末装置2では、従来の端末技術で見られるように、コンテンツデータに他のチャンネルに関する要約データ(ザッピング対策用のコンテンツデータ)を重畳して配信することがないのでP2P通信によるインターネットへ負荷をかけることがない。
また、ここでは、ザッピングの操作をしたユーザが選択したチャンネルのコンテンツデータを受信中の隣接端末装置2e1が存在し、且つ、その隣接端末装置2e1が下流側にザッピングをする自端末装置2c1を接続可能な状態であった場合について説明したが、自端末装置2c1の地理的近隣にユーザが選択したチャンネルのコンテンツデータを受信中の隣接端末装置2e1が存在しない場合や、仮に存在しても、その隣接端末装置2e1が下流側に端末装置2を接続できない場合、もしくは、端末装置2を接続可能な状態であるが、接続する接続する端末装置2とのネットワーク上における近接度が低い場合には、以下に説明する通常接続を行う。
すなわち、通常接続を行う場合に端末装置2は、まず、接続管理装置3に接続して、接続管理装置から、ユーザが選択したチャンネルのコンテンツデータを配信可能な他の端末装置2、又は、コンテンツ配信装置1の候補を取得する。
次に、端末装置2は、取得した候補の中から選択した装置(他の端末装置2、又は、コンテンツ配信装置1)との間で有線通信による接続を確立すべく上記したNAT越えのための処理を行い、有線通信による接続を確立した装置とのネットワーク上における近接度を計測する。
すなわち、有線通信による接続を確立した装置に関するポップ数及びRTTを取得して、ポップ数及びRTTがそれぞれに対して設定された所定の閾値以下である場合に、その装置へストリーム送信依頼を送信し、ポップ数又はRTTが所定の閾値よりも大きい場合には、他の候補に対して、上記したNAT越えの処理、及び、ネットワーク上における近接度の計測を繰り返し行う。
ストリーム送信依頼を受信した装置は、当該ストリーム送信依頼を送信してきた端末装置2を下流側に接続した装置であるとして登録し、その端末装置2へコンテンツデータの送信を開始する。
このコンテンツデータを受信し始めると、端末装置2は、受信したコンテンツデータをデコードして再生する。
また、上記自端末装置2c1では、図5に示したように、隣接端末装置2e1から無線通信によりコンテンツデータの受信を開始してから所定時間が経過した後に、隣接端末装置2e1と有線通信による接続を行うようにしているが、本発明は、これに限定されるものではなく、例えば、図6に示すように、自端末装置2c1が隣接端末装置2e1から無線通信によりコンテンツデータの受信を開始したら、即座に隣接端末装置2e1との有線通信による通信を行うための接続処理を開始し、この接続処理が完了した時点で速やかに隣接端末装置2e1によるストリーム送信を停止するようにしてもよい。
この場合は、有線通信によって形成されている配信経路への参加時間を短縮するかたちとなる。
また、予め各端末装置2のザッピング間隔を端末情報と共に管理しておき、ザッピング間隔の平均時間に応じて、無線通信によるコンテンツデータのストリーム送信の開始から、有線通信による通信を行うための接続処理を開始するまでの時間を可変に設定するようにしてもよい、
こうすることにより、図7に示すように、無線通信によるコンテンツデータのストリーム送信の開始から、有線通信による通信を行うための接続処理を開始するまでの時間を可変に設定することができ、これにより、ユーザのチャンネル切替えに関する行動特性に応じた切替え処理を実現することができる。。
以下、コンテンツ配信システムSを構成するコンテンツ配信装置1、端末装置2及び接続管理装置3についてそれらの具体的な構成及び動作について図面を参照して説明する。
[3.コンテンツ配信装置1の構成等の説明]
次に、図8を参照して、コンテンツ配信装置1の構成及び動作について説明する。
図8は、本実施形態におけるコンテンツ配信装置1の概略構成例を示す図である。コンテンツ配信装置1は、一般のサーバコンピュータを適用可能であり、図8に示すように、CPU(Central Processing Unit)302と、各種プログラム等を記憶(格納)する書き換え可能な主記憶装置としての主記憶装置305と、各種データ等を記憶するハードディスク装置303と、インターネット4を介して端末装置2や接続管理装置3との間で通信を行うネットワークインタフェース304と、所定の情報を入力可能なキーボード307やマウス308等の入力手段を制御する周辺機器制御チップ306と、CPU302からイメージデータを受け取り、内部のビデオメモリ(図示せず)に書き込むと共にこのビデオメモリに書き込んだデータを後述のディスプレイ310に表示するビデオチップ309と、ビデオチップ309から送信される信号に応じた表示を行うディスプレイ310と、FM音源(Frequency Modulation)やWave Table音源などの音源を有する音源チップ311と、音源チップ311から出力されるオーディオ信号を音波に変換する内蔵スピーカ312とを備えて構成され、これらの各種構成要素はシステムバス301を介して相互に接続されている。
なお、ネットワークインタフェース304は、ルータ320を介してインターネット4に接続される。このルータ320は、図1に示すルータ10に相当するものである。
なお、本実施形態においては、CPU302と主記憶装置305とで制御部330を構成している。また、コンテンツ配信装置1には、上述のようにディスプレイ(液晶ディスプレイ等)310等が接続されるようになっており、例えば、コンテンツ配信システムSを運用する放送運営者は、このディスプレイ310を見ながら入力手段から所定の情報を入力することができる。
(主記憶装置305ついて)
また、主記憶装置305には、コンテンツ配信装置1のコンピュータとしての基本的な機能を提供するためのOS(オペレーティングシステム)プログラム317と、ハードディスク装置303に記憶されたコンテンツデータを取り出して端末装置2へストリーミング配信するためのストリーム制御プログラム315と、チャンネル毎に各階構造の各端末装置2の所在情報(IPアドレスやポート番号など)の管理等を行なうためのトポロジー管理プログラム316と、ディスプレイ310を制御するための画面制御プログラム318と、エンコードされたコンテンツデータをデコードしたり、放送用コンテンツ313のコンテンツデータをデコードするためのデコーダプログラム319と、ハードディスク装置303から読み出した放送用コンテンツ313を端末装置2へ送信する前に一時的に記憶するリングバッファ314等を記憶しており、これらはCPU302によって読み出され、CPU302によってこれらのプログラムに従った機能が実行される。
ここで、OSプログラム317は、CPU302によって読み出されて実行されることにより、キーボード307やマウス308の入出力に関する機能や、主記憶装置305やハードディスク装置303どのメモリ管理などのコンテンツ配信装置1であるコンピュータの基本的な機能を実行可能にするものである。
そして、このOSプログラム317がCPU302によって実行された状態で、上述のストリーム制御プログラム315、トポロジー管理プログラム316、画面制御プログラム318、デコーダプログラム319とが主記憶装置305から読み出されて実行される。
なお、OSプログラム317、ストリーム制御プログラム315、トポロジー管理プログラム316、画面制御プログラム318、デコーダプログラム319等は、例えば、インターネット4に接続されたサーバ等から主記憶装置305にダウンロードされるようにしてもよく、また、CD−ROM等の記録媒体に記録されてから当該記録媒体のドライブを介して、主記憶装置305に読み込まれるようにしてもよい。
(制御部330について)
制御部330は、上述のようにCPU302と主記憶装置305とから構成され、CPU302が主記憶装置305に記憶された各種プログラム315〜319を読み出して実行することにより、コンテンツ配信装置1全体を統括制御し、かつ、後述する配信手段等として機能するようになっている。なお、CPU302がストリーム制御プログラム315を実行することによって、配信手段等として、またCPU302がトポロジー管理プログラム316を実行することによって、トポロジー管理手段として、また、CPU302が画面制御プログラム318を実行することによって、表示制御手段等として、CPU302がデコーダプログラム319を実行することによって、再生手段としてそれぞれ機能するようになっている。
(配信手段について)
配信手段は、キーボード307などの入力手段によって、指定されたコンテンツデータを放送用コンテンツ313から取り出し、ネットワークインタフェース304を介して、第1階層の端末装置2a等にストリーミング配信する。
この配信手段による端末装置2a等へのストリーミング配信は、以下の手順で実行される。
配信手段は、予め設定されたコンテンツに対応するコンテンツデータを放送用コンテンツ313から順次取り出してリングバッファ314に記憶させる。
次に、配信手段は、リングバッファ314から取り出したコンテンツデータを、ストリーミング配信用のデータ形式、たとえばASF、WMA、WMV等のデータ形式にエンコードする。
その後、配信手段は、第1階層の端末装置2a等に対して、それぞれ対応するコンテンツデータを所定容量毎に分割しながらコンテンツパケットに格納し、ネットワークインタフェース304を介して、このコンテンツパケットへ送信する。
(トポロジー管理手段)
コンテンツ配信装置1は、1つのコンテンツ配信装置1に1つのチャンネルを割り振られており、トポロジー管理手段は、割り振られたチャンネルに構成されるツリー状階層構造の第1階層に参加している端末装置2の所在情報(IPアドレスやポート番号など)を管理している。そして、上述の配信手段はトポロジー管理手段が管理する端末装置2のIPアドレスを宛先アドレスとし、配信用IPアドレスを送信元として端末装置2へコンテンツデータの配信を行なう。
(表示制御手段について)
表示制御手段は、ビデオチップ309及びディスプレイ310を制御して、コンテンツデータや各種情報を表示する機能を有している。すなわち、表示制御手段は、ディスプレイ310にどのようにコンテンツの映像や各種情報を表示するかを制御することができる。
(再生手段について)
再生手段は、放送用コンテンツ313の中からコンテンツデータをディスプレイ310に表示したり、内蔵スピーカ312から出力したりする機能を有している。
[3.端末装置2の構成等の説明]
次に、図9を参照して、端末装置2の構成及び動作について説明する。
図9は、本実施形態における端末装置2の概略構成例を示す図である。端末装置2は、一般のパーソナルコンピュータあるいは専用端末を適用可能であり、図9に示すように、CPU(Central Processing Unit)202と、各種プログラム等を記憶(格納)する書き換え可能な主記憶装置207と、各種データ等を記憶するハードディスク装置203と、インターネット4を介してネットワーク上のコンテンツ配信装置1や接続管理装置3及び他の端末装置2との間で有線通信による通信を行うための第1通信手段として機能するネットワークインタフェース206と、ユーザが端末装置2を遠隔操作するために所定の赤外線信号を送信及び受信するユーザ入力用リモコン210と、このユーザ入力用リモコン210と赤外線により通信を行なうための赤外線ポート209と、赤外線ポート209を制御する周辺機器制御チップ208と、CPU202からイメージデータを受け取り、内部のビデオメモリ(図示せず)に書き込むと共にこのビデオメモリに書き込んだデータを後述の内蔵ディスプレイ212に表示するビデオチップ211と、ビデオチップ211から送信される信号に応じた表示を行う内蔵ディスプレイ212と、FM音源(Frequency Modulation)やWave Table音源などの音源を有する音源チップ213と、音源チップ213から出力されるオーディオ信号を音波に変換する内蔵スピーカ214とを備えて構成され、これらの各種構成要素はシステムバス201を介して相互に接続されている。
また、この端末装置2のシステムバス201には、この端末装置2と地理的に近接した場所に設置されている他の端末装置(隣接端末装置)2との間で、無線信号を送受信することによってインターネット4のネットワークとは異なる経路で通信するための第2通信手段として機能する無線通信インタフェース204が接続されており、この無線通信インタフェース204には、無線信号を送受信するアンテナ205が接続されている。
そして、この端末装置2では、この無線通信インタフェース204と上記ネットワークインタフェース206とにより通信手段を構成している。
なお、本実施形態においては、CPU202と主記憶装置207とで制御部230を構成している。また、ネットワークインタフェース206は、ルータ223を介して、インターネット4に接続されている。このルータ223は、図1に示すルータ10に相当するものである。
ここで、ユーザ入力用リモコン210は、コンテンツ配信システムSのチャンネルを選択するためのチャンネル選択手段としてチャンネル選択ボタン(図示せず)を有しており、端末装置2のユーザはこのチャンネル選択ボタンによって所望のチャンネルに接続することができる。
(主記憶装置207について)
また、主記憶装置207には、端末装置2のコンピュータとしての基本的な機能を提供するためのOSプログラム219と、コンテンツ配信装置1から直接又は他の端末装置2に中継されてストリーミング配信されるコンテンツデータをストリーム受信及び下流の端末装置2へストリーミング送信するためのストリーム制御プログラム216と、ツリー接続された一層上流の端末装置2(或いはコンテンツ配信装置1)の所在情報(IPアドレスやポート番号)とツリー接続された一層下流の端末装置2の所在情報の管理等を行なうためのトポロジー制御プログラム217と、内蔵ディスプレイ212を制御するための画面制御プログラム220と、上流の装置からストリーミング受信したコンテンツデータをデコードして再生するためのデコーダプログラム221と、上記した隣接端末装置2の端末情報の記憶及び管理を行う端末情報管理プログラム222と、隣接端末装置2及び有線通信で接続している他の端末装置2とのネットワーク上における近接度や、端末情報の更新情報等を監視する端末装置監視プログラム218等を記憶しており、これらはCPU202によって読み出され、CPU202によってこれらのプログラムに従った機能が実行される。
また、主記憶装置207には、ストリーミング受信したコンテンツデータを順次記憶すると共に、記憶したコンテンツデータのうち再生が終了したコンテンツデータ、及び、下流に接続している他の端末装置2が存在する場合にはその端末装置2への配信が終了したコンテンツデータを順次消去するリングバッファ215が設けられている。
ここで、OSプログラム219は、CPU202によって読み出されて実行されることにより、ユーザ入力用リモコン210の入出力に関する機能や、主記憶装置207やハードディスク装置203などのメモリ管理などの端末装置2であるコンピュータの基本的な機能を実行可能にするものである。そして、このOSプログラム219がCPU202によって実行された状態で、上述のストリーム制御プログラム216、トポロジー制御プログラム217、画面制御プログラム220、デコーダプログラム221、端末情報管理プログラム222、端末装置監視プログラム218等が主記憶装置207から読み出されて実行される。
なお、OSプログラム219、ストリーム制御プログラム216、トポロジー制御プログラム217、画面制御プログラム220、デコーダプログラム221、端末情報管理プログラム222、端末装置監視プログラム218等は、例えば、インターネット4に接続されたサーバ等から主記憶装置207にダウンロードされるようにしてもよく、また、CD−ROM等の記憶媒体に記録されてから当該記憶媒体のドライブを介して、主記憶装置207に読み込まれるようにしてもよい。
(制御部230について)
制御部230は、上述のようにCPU202と主記憶装置207とから構成され、CPU202が主記憶装置207に記憶された各種プログラム216〜222を読み出して実行することにより、端末装置2全体を統括制御し、かつ、後述する接続手段、第1受信手段、第2受信手段、隣接端末情報取得手段、判定手段、再生手段、中継手段、平均再生時間検出手段、NATテーブル設定手段、接続可否判断手段、ルータ数検出手段、通信時間検出手段等として機能するようになっている。
なお、CPU202がストリーム制御プログラム216を実行することによって第1受信手段、第2受信手段、中継手段等として、またCPU202がトポロジー制御プログラム217を実行することによって、接続手段、トポロジー管理手段、NATテーブル設定手段、中継依頼受信手段等として、またCPU202が画面制御プログラム220を実行することによって表示制御手段等として、さらにCPU202がデコーダプログラム221を実行することによって再生手段等として、さらにCPU202が端末情報管理プログラム222及び端末装置監視プログラム218を実行することによって、隣接端末情報取得手段、判定手段、平均再生時間検出手段、接続可否判定手段、ルータ数検出手段、通信時間検出手段等として、それぞれ機能するようになっている。
(接続手段について)
接続手段は、端末装置2をコンテンツ配信システムSへ参加させるために、チャンネル選択手段であるユーザ入力用リモコン210のチャンネル選択ボタンのユーザによる操作によって選択されたチャンネルに関する接続先紹介要求を接続管理装置3へ送信し、その後、接続管理装置3から通知された接続先候補に接続する。
より具体的には、接続手段は、端末装置2をコンテンツ配信システムSへ参加させるために、接続管理装置3へ接続先紹介要求を送信して接続管理装置3へ登録すると共に、接続管理装置3へ接続先候補を要求する機能を有している。この接続先紹介要求には、端末装置2のユーザがユーザ入力用リモコン210のチャンネル選択ボタン等を操作することによって選択されるチャンネルを指定した情報及び自端末装置2の所在情報等を含む。
また、接続手段は、自端末装置2があるチャンネルに接続している状態で、端末装置2のユーザがユーザ入力用リモコン210等を操作することによってチャンネルの切替え操作を行ったときには、その切替え操作によって新たに接続すべきチャンネルの階層構造に参加している上記隣接端末装置2のうち、所定の条件を満たす隣接端末装置2に接続する。
これにより端末装置2は一のチャンネルから新たなチャンネルへの接続の切替えを行うことができる。なお、ユーザ入力用リモコン210のチャンネル切替えボタンを設けずに、後述の表示制御手段を動作させてディスプレイにチャンネルの選択画面を表示させ、ユーザ入力用リモコン210操作によって選択させるようにしてもよい。
また、接続手段は、接続管理装置3へ送信した接続先紹介要求に対して、接続管理装置3から通知される接続先候補の情報、すなわち接続先候補の端末装置の所在情報であるIPアドレスやポート番号などの情報(以下、接続先候補の情報を含めて、「接続先候補」と略することがある。)を受信する機能を有する。
さらに、接続手段は、受信した接続先候補の情報に基づいて、その接続先候補への接続を行う機能を有する。すなわち、接続手段は、接続先候補の情報に基づいて、接続先候補のIPアドレス及びポート番号等をあて先とした接続要求を行い、接続先候補との論理接続を行う。このように接続先候補と接続することによって自端末装置2をツリー状階層構造の一部に組み込むことが可能となる。
(第1受信手段について、)
第1受信手段は、ネットワークインタフェース206を介して接続した接続先候補である他の端末装置2又はコンテンツ配信装置1からコンテンツデータを受信するものであり、具体的には、階層構造における一層上流の端末装置2或いはコンテンツ配信装置1からストリーミング配信されるコンテンツパケットを受信する。
(隣接端末情報取得手段について)
隣接端末情報取得手段は、無線通信インタフェース204を介して、複数の隣接端末装置2が選択しているチャンネル番号を含む端末情報を取得する。具体的には、図3に示すように、隣接端末装置の装置番号、所在情報、接続中チャンネル、下流接続可否、ポップ数、RTT等に関する情報を取得する。
(判定手段について)
判定手段は、ユーザによるユーザ入力用リモコン210の操作によってチャンネルが選択されたときに、隣接端末情報手段により取得したチャンネル番号が、ユーザ入力用リモコン210により選択されたチャンネル番号と一致するか否かを判定する。
すなわち、判定手段は、上記端末情報を参照することにより、ユーザがユーザ入力用リモコン210を操作することにより選択したチャンネルのコンテンツデータを現在受信中である隣接端末装置2が存在するか否かを判定するものである。
そして、この判定手段により、チャンネル番号が一致すると判定されときに、上記接続手段は、ユーザによるユーザ入力用リモコン210の操作によってチャンネルが選択された後、チャンネル番号が一致した隣接端末装置2から後述の第2受信手段により無線通信インタフェース204を介してコンテンツデータが受信される所定期間を待って、接続候補である隣接端末装置2にネットワークインタフェース206を介して接続するようにしている。
(第2受信手段について)
第2受信手段は、判定手段によりチャンネル番号が一致すると判定されたときに、無線通信インタフェース204を介して、ユーザによるユーザ入力用リモコン210の操作によって選択されたチャンネルのコンテンツデータのストリーミング配信を、当該チャンネル番号が一致すると判定された隣接端末装置2に要求し、その隣接端末装置2からコンテンツデータを受信する。
(再生手段について)
再生手段は、無線通信インタフェース204又はネットワークインタフェース206によってストリーミング受信したコンテンツデータをリングバッファ215に順次記憶すると共に順次再生する機能を有している。
そして、この再生手段は、ユーザによるユーザ入力用リモコン210の操作によってチャンネルが選択された後、ネットワークインタフェース206で受信したコンテンツデータを再生するまでの間、無線通信インタフェース204を介して受信したコンテンツデータを再生する。
この再生手段は、音源チップ213やビデオチップ211を動作させることによってこの機能を実現しており、リングバッファ215に格納したコンテンツデータを順次取り出して、所定のコンテンツデータ形式(たとえば、Wave形式)に変換して音源チップ213やビデオチップ211へ入力し、コンテンツの再生を行う。
再生手段によって所定のコンテンツデータ形式に変換されたコンテンツデータは、そのコンテンツデータがオーディオ情報を含む場合には、そのオーディオ情報が音源チップ213によってオーディオ信号へ変換された後、内蔵スピーカ214から出力される。
また、再生手段によって所定のコンテンツデータ形式に変換されたコンテンツデータは、そのコンテンツデータに映像情報が含まれるときには、後述の表示制御手段による制御によってこの映像情報が内蔵ディスプレイ212に表示される。
また、再生手段は、リングバッファ215に格納されたコンテンツデータに含まれる再生開始時刻情報に基づいて、当該コンテンツデータを再生するタイミングを決定する。すなわち、再生手段は、リングバッファ215に格納されたコンテンツデータをその再生開始時刻で内蔵スピーカ214や内蔵ディスプレイ212に出力するように構成されている。
(中継手段について)
中継手段は、ネットワークインタフェース206を介して、他の端末装置2からコンテンツデータの中継依頼を受信し、当該中継依頼を行った他の端末装置2へネットワークインタフェース206を介して受信したコンテンツデータを転送する。
また、この中継手段は、隣接端末装置2から無線通信インタフェース204を介して中継依頼を受信した場合には、まず、無線通信インタフェース204を介して、中継依頼を行った隣接端末装置2へコンテンツデータを転送し、その後、接続手段により、自端末装置2と中継依頼を行った隣接端末装置2との間で有線通信による接続が確立したときに、無線通信インタフェース204を介した無線通信によるコンテンツデータの転送を停止し、ネットワークインタフェース206を介した有線通信によるコンテンツデータの転送を開始するようにしている。
(平均再生時間検出手段について)
平均再生時間検出手段は、チャンネル毎のコンテンツデータに関する、上記再生手段による平均再生期間を検出する。
すなわち、この平均再生時間検出手段は、各隣接端末装置2毎に、その隣接端末装置2が1つのチャンネルのコンテンツデータを継続して受信している平均時間を、各チャンネル毎に検出する。
そして、上記接続手段は、この平均再生時間検出手段により検出した平均再生期間の間、第2受信手段により無線通信インタフェース204を介して隣接端末装置2からコンテンツデータが受信されるのを待って、その隣接端末装置2とネットワークインタフェース206を介して有線通信により接続するようにしている。
ただし、接続手段は、隣接端末情報取得手段によって、接続候補である隣接端末装置2の端末情報が取得できないとき、又は、判定手段によりチャンネル番号が一致しないと判断されたときには、この平均再生時間検出手段により検出した平均再生期間を待たずに、接続管理装置3から通知された接続先候補である他の端末装置2にネットワークインタフェース206を介して接続するようにしている。
また、接続手段は、ユーザによるユーザ入力用リモコン210の操作によりチャンネルが選択されてから、この平均再生時間検出手段により検出した平均再生期間内に、さらにユーザ入力用リモコン210の操作が操作されることによって、別のチャンネルが選択された場合には、当該別のチャンネルに対する接続先候補である他の端末装置2には接続しないようにしている。
(NATテーブル設定手段について)
NATテーブル設定手段は、隣接端末情報取得手段によって取得した端末情報における所在情報から他の端末装置2がNAT(ネットワークアドレス置換)ルータに接続されていると判定すると、接続手段による接続動作の前に、他の端末装置2と自端末装置2との通信接続を行うために必要な、NATルータのNATテーブルの設定を行う。
すなわち、NATテーブル設定手段は、NATルータのNATテーブルに有線通信で通信を行う2つの端末装置2間(ここでは、自端末装置2と隣接端末装置2との間)の通信コネクションを記憶させる処理であり、UDP(User Datagram Protocol)を用いて通信する場合には、自端末装置2と隣接端末装置2が同時に相手側の端末装置2へIPパケットを送信することでNATテーブルの設定を行う。
また、このNATテーブル設定手段が行うNAT越えの処理はこれに限らず、たとえば、UPnP規格に規定されているようにNATルータのNATテーブルを設定しておく方法、RFC3489:Simple Traversal of UDP through NATなどに規定されたUDPを用いる方法、或いはSTUNサーバやTeredeサーバなどを利用する方法などを用いても良い。
具体的には、UPnPを用いたNAT越え処理を行う場合、NATテーブル設定手段は、NATルータに対してポート番号のマッピングの生成リクエストを送信することによって行う。
NATルータは、端末装置2からポート番号のマッピングの生成リクエストを受信すると、端末装置2におけるローカルIPアドレスと、NATルータのインターネット側の所定ポート番号とを関連付けてNATテーブルに登録する。
このようにNATテーブルを設定することによって、NATルータのIPアドレスとその所定ポート番号とを含む通信パケットがNATルータによって受信されると、NATテーブルを参照し、この所定ポート番号に対応する当該端末装置2へその通信パケットをポートフォワードすることになる。
このようにUPnP規格によるNAT越えを行った後、端末装置はNATテーブルに設定したポート番号をお互いに知らせあうようにして、端末装置同士のP2P接続をすぐに行うことができるようにしておく。
(接続可否判定手段について)
接続可否判定手段は、隣接端末情報取得手段により取得した端末情報に基づいて、第2受信手段によりコンテンツデータを受信している隣接する他の端末装置2にネットワークを介して有線通信により接続することができるか否かを判定する。
すなわち、接続可否判断手段は、端末情報に含まれる他の端末装置2にネットワークを介して接続することができるか否かの情報である下流側接続可否のフラグがOKを示すものであった場合に接続可能であると判断し、下流側接続可否のフラグがNGを示すものであった場合に接続不可能であると判断する。
そして、この接続可否判断手段により他の端末装置2にネットワークを介して接続できると判定されると、接続手段は、第1通信手段を介して、当該他の端末装置に接続する。
(ルータ数検出手段について)
ルータ数検出手段は、接続可否判定手段により接続できると判定された他の端末装置2と自端末装置2との間で有線通信による通信を行う際に経由するルータ数を、端末情報におけるポップ数を参照することにより検出する。
そして、接続手段は、接続可否判定手段により接続できると判定された他の端末装置2のうち、このルータ数検出手段により検出されたルータ数が所定値以下の端末装置2があるとき、当該他の端末装置2が自端末装置2とネットワーク上において近接していると判断して第1通信手段を介して接続し、ルータ数が所定値よりも大きいとき、第1通信手段を介して接続管理装置3から通知される接続先候補の端末装置2に接続する。
(通信時間検出手段について)
通信手段検出手段は、接続可否判定手段により接続できると判定された他の端末装置2と自端末装置2との間の通信時間を、端末情報のRTTを参照することによって検出する。
そして、接続手段は、接続可否判定手段により接続できると判定された他の端末装置2のうち、通信時間検出手段により検出された通信時間が所定値以下の端末装置2があるとき、当該他の端末装置2が自端末装置2とネットワーク上において近接していると判断して第1通信手段を介して接続し、通信時間が所定値よりも大きいとき、第1通信手段を介して接続管理装置3から通知される接続先候補に接続する。
(表示制御手段について)
表示制御手段は、ビデオチップ211及び内蔵ディスプレイ212を制御して、コンテンツデータや各種情報を表示する機能を有している。すなわち、表示制御手段は、内蔵ディスプレイ212にどのようにコンテンツの映像や各種情報を表示するかを制御することができる。
また、ここでは、本実施形態の端末装置2として、チャンネル選択手段、第1通信手段、第2通信手段、接続手段、第1受信手段、第2受信手段、隣接端末情報取得手段、判定手段、再生手段、中継手段、平均再生時間検出手段、NATテーブル設定手段、接続可否判定手段、ルータ数検出手段、通信時間検出手段という各種手段を1つのユニットに収納した端末装置2を例に挙げて説明を行ったが、本発明はこれに限定されるものではなく、上記各種手段の機能を端末装置2の使用形態に応じて複数のユニットに分割して収納させることもできる。
(端末装置の変形例について)
ここでは、端末装置2の変形例として、上記した第1通信手段と、接続手段と、第1受信手段と、中継手段と、後述する第2ユニットとの間で無線通信を行う第3通信手段とを少なくとも第1ユニットに収納し、
上記した第2通信手段と、チャンネル選択手段と、隣接端末情報取得手段と、判定手段と、再生手段と、第1ユニットとの間で無線通信を行う第3通信手段とを少なくとも第2ユニットに収納した端末装置2について説明する。
この端末装置2は、図10に示すように、第1ユニットとしてのストリーム中継制御モジュール500と、第2ユニットとしてのユーザインターフェースモジュール513とにより構成されている。
そして、ストリーム中継制御モジュール500は、主に、インターネット等のネットワークと有線通信により接続して、ネットワークに接続している他の端末装置2やコンテンツ配信装置1等の配信経路上流側の装置からコンテンツデータをストリーム受信して記憶すると共に、記憶したコンテンツデータを順次下流側に接続している他の端末装置2へコンテンツデータをストリーム送信するストリーム中継機能を担うものである。
また、ユーザインターフェースモジュール513は、主に、ストリーム中継制御モジュール500が受信したコンテンツデータを無縁通信により受信して再生する機能、及び、地理的に近い場所に設置されている他の端末装置(隣接端末装置)2との間で無線通信を行うことにより、隣接端末装置2の端末情報を受信・管理して、ユーザによるザッピングを円滑に行えるようにする機能を担うものである。
(ストリーム中継制御モジュールの構成について)
以下、図10を参照してストリーム中継制御モジュール500の構成について、具体的に説明する。
図10に示すように、ストリーム中継制御モジュール500は、一般のパーソナルコンピュータあるいは専用端末を適用可能であり、第1CPU(Central Processing Unit)502と、各種プログラム等を記憶(格納)する書き換え可能な第1主記憶装置504と、インターネット4を介してネットワーク上のコンテンツ配信装置1や接続管理装置3及び他の端末装置2との間で有線通信による通信を行うための第1通信手段として機能するネットワークインタフェース503とを備えて構成され、これらの各種構成要素は第1システムバス501を介して相互に接続されている。
また、このストリーム中継制御モジュール500の第1システムバス501には、このストリーム中継制御モジュール500とユーザインターフェースモジュール513との間で無線信号を送受信することによって、ユーザインターフェースモジュール513へのコンテンツデータの送信、及び、ユーザインターフェースモジュール513からの各種制御信号の受信するための第3通信手段として機能する無線通信インタフェース505が接続されており、この無線通信インタフェース505には、無線信号を送受信するアンテナ506が接続されている。
そして、このストリーム中継制御モジュール500では、この無線通信インタフェース505と上記ネットワークインタフェース503とにより通信手段を構成している。
なお、本実施形態においては、第1CPU502と第1主記憶装置504とで第1制御部560を構成している。また、ネットワークインタフェース503は、ルータ507を介して、インターネット4に接続されている。このルータ507は、図1に示すルータ10に相当するものである。
(第1主記憶装置について)
また、第1主記憶装置504には、ストリーム中継制御モジュール500のコンピュータとしての基本的な機能を提供するためのOSプログラム510と、コンテンツ配信装置1から直接又は他の端末装置2に中継されてストリーミング配信されるコンテンツデータをストリーム受信及び下流の端末装置2へストリーミング送信するためのストリーム制御プログラム509と、ツリー接続された一層上流の端末装置2(或いはコンテンツ配信装置1)の所在情報(IPアドレスやポート番号)とツリー接続された一層下流の端末装置2の所在情報の管理等を行なうためのトポロジー制御プログラム511等を記憶しており、これらは第1CPU502によって読み出され、第1CPU502によってこれらのプログラムに従った機能が実行される。
また、第1主記憶装置504には、ストリーミング受信したコンテンツデータを順次記憶すると共に、記憶したコンテンツデータのうちユーザインターフェースモジュール513への転送が終了したコンテンツデータ、及び、下流に接続している他の端末装置2が存在する場合にはその端末装置2への配信が終了したコンテンツデータを順次消去するリングバッファ508が設けられている。
ここで、OSプログラム510は、第1CPU502によって読み出されて実行されることにより、第1主記憶装置504などのメモリ管理などのストリーム中継制御モジュール500であるコンピュータの基本的な機能を実行可能にするものである。そして、このOSプログラム510が第1CPU502によって実行された状態で、上述のストリーム制御プログラム509、トポロジー制御プログラム511等が第1主記憶装置504から読み出されて実行される。
なお、OSプログラム510、ストリーム制御プログラム509、トポロジー制御プログラム511等は、例えば、インターネット4に接続されたサーバ等から主記憶装置207にダウンロードされるようにしてもよく、また、CD−ROM等の記憶媒体に記録されてから当該記憶媒体のドライブを介して、第1主記憶装置504に読み込まれるようにしてもよい。
(第1制御部について)
第1制御部560は、上述のように第1CPU502と第1主記憶装置504とから構成され、第1CPU502が第1主記憶装置504に記憶された各種プログラム509〜511を読み出して実行することにより、ストリーム中継制御モジュール500全体を統括制御し、かつ、図9に示す端末装置2の接続手段、第1受信手段、中継手段と同様に機能するようになっている。
(ユーザインターフェースモジュールの構成について)
図10に示すように、ユーザインターフェースモジュール513は、一般のパーソナルコンピュータあるいは専用端末を適用可能であり、図10に示すように、第2CPU(Central Processing Unit)515と、各種プログラム等を記憶(格納)する書き換え可能な第2主記憶装置519と、各種データ等を記憶するハードディスク装置516と、ユーザがユーザインターフェースモジュール513を遠隔操作するために所定の赤外線信号を送信及び受信するユーザ入力用リモコン522と、このユーザ入力用リモコン522と赤外線により通信を行なうための赤外線ポート512と、赤外線ポート512を制御する周辺機器制御チップ520と、第2CPU515からイメージデータを受け取り、内部のビデオメモリ(図示せず)に書き込むと共にこのビデオメモリに書き込んだデータを後述の内蔵ディスプレイ524に表示するビデオチップ523と、ビデオチップ523から送信される信号に応じた表示を行う内蔵ディスプレイ524と、FM音源(Frequency Modulation)やWave Table音源などの音源を有する音源チップ525と、音源チップ525から出力されるオーディオ信号を音波に変換する内蔵スピーカ526とを備えて構成され、これらの各種構成要素は第2システムバス514を介して相互に接続されている。
また、このユーザインターフェースモジュール513の第2システムバス514には、このユーザインターフェースモジュール513とストリーム中継制御モジュール500との間で、無線信号を送受信することによってストリーム中継制御モジュール500からのコンテンツデータの受信、及び、ストリーム中継制御モジュール500への各種制御信号の送信を行うための無線通信インタフェース517が接続されており、この無線通信インタフェース517には、無線信号を送受信するアンテナ518が接続されている。
そして、このユーザインターフェースモジュール513では、この無線通信インタフェース517により通信手段を構成している。なお、本実施形態においては、第2CPU515と第2主記憶装置519とで第2制御部570を構成している。
ここで、ユーザ入力用リモコン522は、コンテンツ配信システムSのチャンネルを選択するためのチャンネル選択手段としてチャンネル選択ボタン(図示せず)を有しており、端末装置2のユーザはこのチャンネル選択ボタンによって所望のチャンネルに接続することができる。
(第2主記憶装置519について)
また、第2主記憶装置519には、ユーザインターフェースモジュール513のコンピュータとしての基本的な機能を提供するためのOSプログラム530と、コンテンツ配信装置1から直接又は他の端末装置2に中継されてストリーミング配信されるコンテンツデータをストリーム受信及び下流の端末装置2へストリーミング送信するためのストリーム制御プログラム527と、内蔵ディスプレイ524を制御するための画面制御プログラム531と、上流の装置からストリーミング受信したコンテンツデータをデコードして再生するためのデコーダプログラム532と、隣接端末装置2及び有線通信で接続している他の端末装置2とのネットワーク上における近接度や、端末情報の更新情報等を監視する端末装置監視プログラム258等を記憶しており、これらは第2CPU515によって読み出され、第2CPU515によってこれらのプログラムに従った機能が実行される。
また、第2主記憶装置519には、複数の隣接端末装置2から取得する端末情報を記憶して管理するための端末装置管理情報529が記憶されている。
ここで、OSプログラム530は、第2CPU515によって読み出されて実行されることにより、ユーザ入力用リモコン522の入出力に関する機能や、第2主記憶装置519やハードディスク装置516などのメモリ管理などのユーザインターフェースモジュール513であるコンピュータの基本的な機能を実行可能にするものである。そして、このOSプログラム530が第2CPU515によって実行された状態で、上述のストリーム制御プログラム527、画面制御プログラム531、デコーダプログラム532、端末装置監視プログラム528等が第2主記憶装置514から読み出されて実行される。
なお、OSプログラム530、ストリーム制御プログラム527、画面制御プログラム531、デコーダプログラム532、端末装置監視プログラム528等は、例えば、インターネット4に接続されたサーバ等から第2主記憶装置519にダウンロードされるようにしてもよく、また、CD−ROM等の記憶媒体に記録されてから当該記憶媒体のドライブを介して、第2主記憶装置519に読み込まれるようにしてもよい。
(第2制御部について)
第2制御部570は、上述のように第2CPU515と第2主記憶装置519とから構成され、第2CPU515が第2主記憶装置519に記憶された各種プログラム527、528、530〜532を読み出して実行することにより、ユーザインターフェースモジュール513全体を統括制御し、かつ、図9に示す端末装置2の第2受信手段、隣接端末情報取得手段、判定手段、再生手段、平均再生時間検出手段、NATテーブル設定手段、接続可否判断手段、ルータ数検出手段、通信時間検出手段等と同様に機能するようになっている。
このように、端末装置2が備える機能を、その使用形態に応じて2つのユニットに分割して担わせることにより、端末装置2の使い勝手をより向上させることができる。
たとえば、インターネットルータの設置場所の近くにストリーム中継制御モジュール500を設け、ユーザの居室にユーザインターフェースモジュール513を設けることができ、この場合、ユーザインターフェースモジュール513は、その機能を縮小させている分、図9に示す端末装置2より小型に構成できるため、ユーザの居室において端末装置2が占めるスペースを可及的に縮小することができる。
しかも、ユーザインターフェースモジュール513は、無線通信によりストリーム中継制御モジュール500からコンテンツデータを受信して再生することができるので、無線通信に使用するチャンネル数を増設して、1つのストリーム中継制御モジュール500を設けると共に、複数のユーザにユーザインターフェースモジュール513を所持させれば、各ユーザが自身の居室でそれぞれコンテンツデータを視聴することができる。
[4.接続管理装置3の構成等の説明]
次に、図11を参照して、接続管理装置3の構成及び動作について説明する。
図11は、本実施形態における接続管理装置3の概略構成例を示す図である。接続管理装置3は、一般のサーバコンピュータを適用可能であり、図11に示すように、CPU(Central Processing Unit)402と、各種プログラム等を記憶(格納)する書き換え可能な主記憶装置405と、各種データ等を記憶するハードディスク装置403と、インターネット4を介してコンテンツ配信装置1や端末装置2との間で通信を行うネットワークインタフェース404と、所定の情報を入力可能なキーボード407やマウス408等の入力手段を制御する周辺機器制御チップ406と、CPU402からイメージデータを受け取り、内部のビデオメモリ(図示せず)に書き込むと共にこのビデオメモリに書き込んだデータを後述のディスプレイ410に表示するビデオチップ409とを備えて構成され、これらの各種構成要素はシステムバス401を介して相互に接続されている。
なお、本実施形態においては、CPU402と主記憶装置405とで制御部430を構成している。なお、ネットワークインタフェース404は、ルータ418を介して、インターネット4に接続されている。このルータ418は、図1に示すルータ10に相当するものである。
(主記憶装置405について)
また、主記憶装置405には、接続管理装置3のコンピュータとしての基本的な機能を提供するためのOSプログラム416と、チャンネルに接続される複数の端末装置2の所在情報(IPアドレスやポート番号など)などを管理するための端末管理プログラム413と、各チャンネルのツリー状階層構造を構築及び管理等するためのトポロジー管理プログラム414と、端末装置2から送信される接続先紹介要求に対応するチャンネルの接続先候補を選択し、端末装置2へ接続先候補の情報を送信等するための接続先紹介プログラム417と、コンテンツ配信システムSの運用を管理等するための運用管理プログラム415等を記憶しており、これらはCPU402によって読み出され、CPU402によってこれらのプログラムに従った機能が実行される。
ここで、OSプログラム416は、CPU402によって読み出されて実行されることにより、キーボード407やマウス408の入出力に関する機能や、主記憶装置405やハードディスク装置403などのメモリ管理などの接続管理装置3であるコンピュータの基本的な機能を実行可能にするものである。そして、このOSプログラム416がCPU402によって実行された状態で、上述の端末管理プログラム413、トポロジー管理プログラム414、接続先紹介プログラム417、運用管理プログラム415等が実行される。
なお、OSプログラム416、端末管理プログラム413、トポロジー管理プログラム414、接続先紹介プログラム417、運用管理プログラム415等は、例えば、インターネット4に接続されたサーバ等から主記憶装置405にダウンロードされるようにしてもよく、また、CD−ROM等の記憶媒体に記録されてから当該記憶媒体のドライブを介して、主記憶装置405に読み込まれるようにしてもよい。
(制御部430について)
制御部430は、上述のようにCPU402と主記憶装置405とから構成され、CPU402が主記憶装置405に記憶された各種プログラム413〜417を読み出して実行することにより、接続管理装置3全体を統括制御し、かつ、後述する接続先候補選択手段、通知手段、トポロジー管理手段、端末管理手段等として機能させ、さらにハードディスク装置403を接続状態情報記憶手段として使用する。
なお、CPU402が端末管理プログラム413を実行することによって、端末管理手段等として、またCPU402がトポロジー管理プログラム414を実行することによってトポロジー管理手段等として、さらにCPU402が接続先紹介プログラム417を実行することによって接続先候補選択手段、通知手段等として、それぞれ機能し、本実施形態では、これら接続先候補選択手段と通知手段とにより接続先候補通知手段を構成するようになっている。
(端末管理手段について)
端末管理手段は、端末装置2からの登録要求を受信すると、端末管理データベース412へこの端末装置2の所在情報であるIPアドレスなどをチャンネル毎に登録する。また、コンテンツ配信装置1からの登録要求を受信した場合も、このコンテンツ配信装置1の所在情報であるIPアドレスなどを各チャンネル毎に端末管理データベース412に登録する。なお、これらの端末装置2の所在情報は端末装置2からの登録要求に含まれ、この登録要求から所在情報を取得する。
(トポロジー管理手段について)
トポロジー管理手段は、コンテンツ配信装置1から送信される新規チャンネル生成要求に基づいて、新規チャンネルのツリー状階層構造を生成するための新規トポロジー生成手段と、端末装置2の接続先紹介要求や接続切断通知などのトポロジー変動通知によってチャンネルにおける端末装置2の接続情報を変更するトポロジー変更手段としての機能を有している。また、トポロジー管理手段は、チャンネル毎に階層構造を構成する端末装置2の接続状態情報を接続状態情報記憶手段としてのトポロジーデータベース411へ記憶する。
新規トポロジー生成手段は、コンテンツ配信装置1から新規チャンネル生成要求を受信すると、新規チャンネルのトポロジーテーブルを生成してトポロジーデータベース411へ登録する。ここで、トポロジーテーブルは、チャンネル毎に階層構造を構成する端末装置2の接続状態情報などを格納するためのテーブルであり、チャンネルごとに生成されてトポロジーデータベース411に登録される。
トポロジー変更手段は、トポロジーデータベース411に記憶される複数のトポロジーテーブルに端末装置2の情報を追加又は削除する機能を実行するものであり、端末装置2からの接続先紹介要求トポロジー参加報告に基づいて、トポロジーテーブルへの追加又は変更を行うものである。
(接続先候補選択手段について)
接続先候補選択手段は、チャンネルに新規に参加しようとする端末装置2から接続先紹介要求を受信したとき、接続先紹介要求に対応するチャンネルの階層構造において、当該階層構造を構成する端末装置2の接続先紹介要求に対する接続先候補を、トポロジーデータベース411に記憶された接続状態情報から選択する。
(通知手段について)
通知手段は、接続先候補選択手段によって選択された接続先候補を、接続先紹介要求を送信した端末装置2へ通知する機能を有する。この接続先候補の通知は、接続先候補の情報、すなわち接続先候補の端末装置2の通信プロトコル、IPアドレスやポート番号などの情報を含む。
[5.コンテンツ配信システムSの動作]
以下、端末装置2及び接続管理装置3の詳細動作について、フローチャートを用いて更に具体的に説明する。
(端末装置2の処理フローの説明)
まず、端末装置2の更に具体的な動作について、図12〜図17を参照して説明する。図12は端末装置2における処理全体を示すフローチャート、図13は端末装置2におけるチャンネル切替え処理を示すフローチャート、図14は端末装置2における接続変更処理を示すフローチャート、図15は端末装置2における接続前処理を示すフローチャート、図16は端末装置2における接続確立処理を示すフローチャート、図17は端末装置2におけるコンテンツデータ送信開始/停止処理を示すフローチャートである。
まず、図12を参照して、端末装置2における処理全体の概要を説明する。
まず、端末装置2の電源がONされると、端末装置2では各プログラム216〜222の初期化が行われ(ステップS101)、各プログラム216〜222をCPU202による実行状態とし、制御部230としての機能を動作させた後、処理をステップS102へ移す。
ステップS102において制御部230は、ユーザによる210の操作により、チャンネル切替え要求が行われたか否かを判断する。このステップS102において、チャンネル切替え要求が行われたと判定する(ステップS102:YES)と、制御部230は、ステップS103において図13に示すチャンネル切替え処理を行う。
また、ステップS102において、チャンネル切替え要求が行われていないと判定すると(ステップS102:NO)、制御部230は、接続管理装置3から上流端末の候補を受信したか否かの判定を行う(ステップS105)。
すなわち、制御部230は、接続管理装置3からユーザが選択した階層構造において、自端末装置2の上流に接続可能な他の端末装置2の候補を受信したか否かの判断を行う。
ステップS105において制御部230は、上流端末の候補を受信したと判断した場合(ステップS105:YES)に、ステップS106において図14に示す接続処理を行う。
また、ステップS105において制御部230は、上流端末の候補を受信していないと判断した場合(ステップS105:NO)に処理をステップS107に移す。
ステップS107において制御部230は、隣接端末装置2より状態報告通知を受信したか否かの判断を行う。すなわち、制御部230は、自端末装置2と地理的に近接した場所に設置されている他の端末装置2から、当該他の端末装置2に関する装置番号、所在情報、接続中チャンネル、下流接続可否、ポップ数、RTT等の端末情報を受信したか否かの判断を行う。
このステップS107において制御部230は、状態報告通知を受信したと判断した場合(ステップ107:YES)に、ステップS108において図15に示す接続前処理を行い、状態報告通知を受信していないと判断した場合(ステップS107:NO)に処理をステップS109へ移す。
ステップS109において制御部230は、上流端末装置2からコンテンツデータパケットを受信したか否かの判断を行う。すなわち、制御部230は、階層構造において自端末装置2の常駐に接続されている端末装置から、コンテンツデータを受信中であるか否かの判断を行う。
このステップS109において制御部230は、上流端末装置2からコンテンツデータパケットを受信したと判断した場合(ステップS109:YES)に、処理をステップS110に移し、下流側の端末装置2へパケットを転送する。
すなわち、ここで制御部230は、階層構造の上流側に接続している他の端末装置2から受信したコンテンツデータを複数のコンテンツデータパケットに分割して、階層構造における下流側に接続している他の端末装置2へ中継して配信し、その後、処理をステップS111へ移す。
ステップS111において制御部230は、リングバッファ215から再生時刻に達したパケットを取得して再生する。すなわち、ここで制御部230は、階層構造における上流側に接続している他の端末装置2から受信して順次リングバッファ215に記憶した複数のコンテンツパケットに含まれる再生時刻情報を参照し、その再生時刻に達したコンテンツパケットから順にデコードして順次再生する。
また、ステップS109において制御部230は、上流端末装置2からコンテンツデータパケットを受信していないと判断した場合(ステップS109:NO)に、処理をステップS112へ移す。
ステップS112において制御部230は、隣接端末装置2からコンテンツデータパケットを受信したか否かの判断を行う。すなわち、ここで制御部230は、隣接端末装置2から無線通信インタフェース204を介して無線通信により複数のパケットに分割されたコンテンツデータを受信したか否かの判断を行う。
このステップS112において制御部230は、隣接端末装置2からコンテンツデータパケットを受信したと判断した場合に(ステップS112:YES)に、処理をステップS113へ移し、図16に示す接続確立処理を行う。
また、ステップS112において制御部230は、隣接端末装置2からコンテンツデータパケットを受信していないと判断した場合(ステップS112:NO)に、処理をステップS114へ移す。
ステップS114において制御部230は、ストリームの送信開始/停止要求があるか否かの判断を行う。すなわち、ここで制御部230は、無線通信インタフェース204又はネットワークインタフェース206を介して他の端末装置2からコンテンツデータのストリーム送信開始の要求とストリーム送信停止の要求のうち、いずれか一方の要求を受信したか否かの判断を行う。
このステップS114において制御部230は、ストリームの送信開始/停止要求があると判断した場合(ステップS114:YES)に、処理をステップS115へ移し図17に示すコンテンツデータ送信開始/停止処理を行う。
また、ステップS114において制御部230は、ストリームの送信開始/停止要求がないと判断した場合(ステップS114:NO)に、処理をステップS116へ移す。
このステップS116において制御部230は、隣接端末装置2への状態報告契機であるか否かの判断を行う。すなわち、ここで制御部230は、前回自端末装置2の端末情報を複数の隣接端末装置2へ送信してから所定期間(ここでは、1分間)が経過したか否かを判断することにより、状態報告契機であるか否かを判断する。
このステップS116において制御部230は、状態報告契機であると判断した場合、すなわち、前回自端末装置2の端末情報を複数の隣接端末装置2へ送信してから所定期間が経過したと判断した場合(ステップS116:YES)に、処理をステップS117へ移し、無線通信インタフェース204を介して、自端末装置2の現時点での端末情報を複数の隣接端末装置2へ一斉に送信する。
また、ステップS116において制御部230は、状態報告契機でないと判断した場合、及び、ステップS103、S106、108、S111、S113、S115、S117の処理が終了した場合に処理をステップS104へ移す。
ステップS104において制御部230は、ユーザの操作により端末装置2の電源がOFFされたか否かの判断を行い、OFFされたと判断した場合(S104:YES)に全ての処理を終了し、OFFされていないと判断した場合(ステップS104:NO)に、処理をステップS102に戻す。
(チャンネル切替え処理)
次に、図12に示すS103で行うチャンネル切替え処理について、図13を参照して具体的に説明する。
チャンネル切替え処理において制御部230は、まず、現在のコンテンツデータ供給元端末装置2へコンテンツストリームの停止要求を行う(ステップS118)。
すなわち、ここで制御部230は、前回のユーザによるユーザ入力用リモコン210の操作によって選択されていたチャンネルのコンテンツデータを、現在自端末装置2へストリーム送信している他の端末装置2に対して、その送信停止を要求する処理を行い、その後、処理をステップS119へ移す。
ステップS119において制御部230は、要求チャンネルを視聴中の隣接端末装置2が存在するか否かの判断を行う。すなわち、ここで制御部230は、端末情報の接続中チャンネルを参照することにより、接続中チャンネルの番号が、今回のユーザによるユーザ入力用リモコン210の操作によって選択されたチャンネル番号と同一の隣接端末装置2が存在するか否かの判断を行う。
このステップS119において制御部230は、要求チャンネルを視聴中の隣接端末装置が存在すると判断した場合(ステップS119:YES)に、処理をステップS120へ移し、無線通信インタフェース204を介して、接続中チャンネルのチャンネル番号がユーザにより選択されたチャンネル番号と同一の隣接端末装置2へ、コンテンツデータのストリーム配信を要求する処理を行い、その後、このチャンネル切替え処理を終了して処理を図12に示すステップS104へ移す。
また、ステップ119において制御部230は、要求チャンネルを視聴中の隣接端末装置が存在しないと判断した場合(ステップS119:NO)に、接続管理装置3へ上流端末の候補を要求し、その後、このチャンネル切替え処理を終了して処理を図12に示すステップS104へ移す。
(接続処理)
次に、図12に示すS106で行う接続処理について、図14を参照して具体的に説明する。
接続処理において制御部230は、まず、取得した候補の中から上流端末装置2を一つ選択する(ステップS122)。すなわち、ここで制御部230は、接続管理装置3から通知される自端末装置2の上流に接続する複数の他の端末装置2の候補(上流端末装置2)の中から1つの端末装置2を任意に選択する処理を行い、その後、処理をステップS123に移す。
ステップS123において制御部230は、該上流端末装置2に対してNAT越え処理を行う。すなわち、制御部230は、ステップS122の処理で選択した上流端末装置2が接続しているルータ10の外部から自端末装置2が、その上流端末装置2へIPパケットを送信できる状態にすると共に、自端末装置2が接続しているルータ10の外部から、上流端末装置2が自端末装置2へIPパケットを送信できる状態にするために、上流端末装置2へIPパケットを送信し、このとき同時に上流端末装置2から自端末装置2へ送信されるIPパケットを受信する。
そして、このとき制御部230は、上流端末装置2から受信したIPパケットを用いてNATルータのNATテーブルの設定を行い、その後、処理をステップS124へ移す。
ステップS124において制御部230は、上流端末装置2がネットワーク的に近いか否かの判断を行う。すなわち、ここで制御部230は、端末情報のポップ数とRTTを参照することにより、自端末装置2と上流端末装置2とのネットワーク上における近接度を計測し、その計測結果に基づいて、上流端末装置2と自端末装置2とがネットワーク的に近いか否かの判断を行う。
このとき、制御部230は、ポップ数から自端末装置2と上流端末装置2との間のネットワーク上に存在するルータ数を取得し、そのルータ数が予め定めた所定の値以下であり、且つ、RTTから自端末装置2と上流端末装置2との間の通信時間を取得し、その通信時間が予め定めた所定の値以下であった場合に、上流端末装置2と自端末装置2とがネットワーク的に近いと判断する。
一方、制御部230は、上記取得したルータ数が所定の値よりも多い場合、又は、上記取得した通信時間が所定の値よりも長いと判断した場合に、上流端末装置2と自端末装置2とがネットワーク的に遠いと判断する。
そして、このステップS124において制御部230は、上流端末装置2と自端末装置2とがネットワーク的に遠いと判断した場合(ステップS124:NO)に、処理をステップS122へ戻し、ネットワーク的に自端末装置2と近い他の上流端末装置2を検出するまでの間、ステップS122〜S124の処理を繰り返し行う。
またステップS124において制御部230は、上流端末装置2と自端末装置2とがネットワーク的に近いと判断した場合(ステップS124:YES)に、該上流端末装置2の下流端末装置として接続し、その後、処理をステップS125へ移す。
また、ステップS125において制御部230は、該上流端末装置2の下流端末として接続し、その後、処理をステップS126へ移す。
ステップS126において制御部230は、ネットワークインタフェース206を介して接続管理装置3へトポロジー参加報告を送信し、その後、処理を図12に示すステップS104へ移す。
(接続前処理)
次に、図12に示すS108で行う接続前処理について、図15を参照して具体的に説明する。
接続前処理において制御部230は、まず、受信した情報を端末情報へ登録する(ステップS127)。すなわち、ここで制御部230は、ステップS107で受信した各状態報告通知から、各隣接端末装置2の装置番号、所在情報、接続中チャンネル、下流接続可否、ポップ数、RTTを端末情報として取得することにより、既に取得している状態情報を更新して登録し、その後、処理をステップS128へ移す。
ステップS128において制御部230は、ステップS127で登録した端末情報から、当該端末情報を送信してきた隣接端末装置2のポップ数とRTTとを取得し、これらポップ数とRTTとを用いて、その隣接端末装置2に対するネットワークにおける近接度を計測し、その後、処理をステップS129へ移す。
ステップS129において制御部230は、ステップS128においてネットワークにおける近接度を計測した結果に基づいてNAT越えをすべき隣接端末装置2が存在するか否かの判断を行う。
すなわち、このステップS129において制御部230は、S128において計測したネットワークにおける近接度が、所定の値よりも高い隣接端末装置2が存在しないと判断した場合(ステップS129:NO)に、この接続前処理を終了して処理を図12に示すステップS104へ移し、近接度が所定の値よりも高い隣接端末装置2が存在すると判断した場合(ステップS129:YES)に、処理をステップS130に移す。なお、このステップS129における判断基準としては、図14のステップS124の処理における判断基準と同様の判断基準を用いる。
ステップS130において制御部230は、ステップS129においてNAT越えすべきと判断された隣接端末装置2に対して、図14に示すステップS123と同様にして、NAT越え処理を実施し、その後、この接続前処理を終了して処理を図12に示すステップS104へ移す。
(接続確立処理)
次に、図12に示すS113で行う接続確立処理について、図16を参照して具体的に説明する。
接続確立処理において制御部230は、まず、ステップS131において、階層構造の上流に接続している端装置2から受信した複数のパケットに分割されたコンテンツデータをデコードして即時再生し、その後、処理をステップS132へ移す。
ステップS132において制御部230は、ステップS112において無線通信によるパケット受信を開始してから一定時間が経過したか否かの判断を行い、一定時間が経過したと判断した場合(ステップS132:YES)に処理をステップS133へ移し、一定時間が経過していないと判断した場合(ステップS132:NO)にこの接続確立処理を終了して、処理を図12に示すステップS104へ移す。
ステップS133において制御部230は、無線通信により一定時間継続してパケットを送信してきた隣接端末装置2の端末情報を参照して、その後、処理をステップS134へ移す。
ステップS134において制御部230は、ステップS133において参照した端末情報に基づいて、その隣接端末装置2がネットワーク的に近いか否かの判断を行い、ネットワーク的に近いと判断した場合(ステップS134:YES)に処理をステップS135へ移し、ネットワーク的に遠いと判断した場合(ステップS134:NO)に処理をステップS137へ移す。なお、ここでの判断基準に関しては、図14のステップS124の処理における判断基準と同様の判断基準を用いる。
ステップS135において制御部230は、ステップS134において自端末装置2にネットワーク的に近いと判断された隣接端末装置2の下流側に下流端末装置として接続する処理を行い(ステップS135)、その後、接続した上流側の隣接端末装置2へコンテンツストリームの送信要求を行い(ステップS136)、この接続確立処理を終了して処理を図12に示すステップS104へ移す。
ステップS137において制御部230は、ステップS134において自端末装置2からネットワーク的に遠いと判断された隣接端末装置2とは別の接続先候補を通知してもらうために、接続管理装置3へ上流端末装置の候補を要求し、その後、この接続確立処理を終了して処理を図12に示すステップS104へ移す。
(コンテンツデータ送信開始/停止処理)
次に、図12に示すステップS115で行うコンテンツデータ送信開始/停止処理について、図17を参照して具体的に説明する。
コンテンツデータ送信開始/停止処理において制御部230は、まず、ステップS114において受信した要求が無線通信インタフェース204を介した要求であるか否かの判断を行い(ステップS138)、無線通信インタフェース204を介した要求であると判断した場合(ステップS138:YES)に処理をステップS139へ移し、無線通信インタフェース204を介した要求でない、すなわち、ネットワークインタフェース206を介した要求であると判断した場合(ステップS138:NO)に、処理をステップS140へ移す。
ステップS139において制御部230は、無線通信インタフェース204を介して受信した要求を送信してきた隣接端末装置2に対し、その要求に応じてコンテンツデータの送信開始、又は、コンテンツデータの送信停止を行う。
ステップS140において制御部230は、ネットワークインタフェース206を介して受信した要求を送信してきた他の端末装置2に対し、その要求に応じてコンテンツデータの送信開始、又は、コンテンツデータの送信停止を行う。
(接続管理装置3の処理フローの説明)
次に、接続管理装置3の更に具体的な動作について、図18を参照して説明する。図18は接続管理装置3における処理全体を示すフローチャートである。
接続管理装置3の電源がONになると、接続管理装置3は、各プログラム413〜417の初期化を行い、各プログラム413〜417をCPU402による実行状態とし、制御部430としての機能を動作させる(ステップS201)。
制御部430は、まず、端末装置2からチャンネルへの参加要求を受信したか否かを判定する(ステップS202)。
ステップS202において、端末装置2からチャンネルへの参加要求を受信したと判定すると(ステップS202:YES)、制御部430は、受信した参加要求に含まれる端末装置2の所在情報を端末管理データベース412へ登録する(ステップS203)。
一方、ステップS202において、端末装置2からチャンネルへの参加要求を受信していないと判定すると(ステップS202:NO)、制御部430は、コンテンツ配信装置1からの登録要求を受信したか否かを判定する(ステップS205)。
ステップS205において、コンテンツ配信装置1からの登録要求を受信したと判定すると(ステップS205:YES)、制御部430は、受信した登録要求に含まれるコンテンツ配信装置1の所在情報を端末管理データベース412へ登録する(ステップS206)。
次に、制御部430は、新しいチャンネルの情報をトポロジーデータベース411に登録する。すなわち、トポロジーデータベース411に新しいチャンネルのトポロジーテーブルを生成するのである(ステップS207)。
ステップS205において、コンテンツ配信装置1からの登録要求を受信していないと判定すると(ステップS205:NO)、制御部430は、端末装置2から接続先紹介要求を受信したか否かを判定する(ステップS208)。
ステップS208において、端末装置2から接続先紹介要求を受信したと判定すると(ステップS208:YES)、制御部430は、トポロジーデータベース411から接続先候補となる端末装置2を選択する(ステップS209)。
接続管理装置3の制御部430は、このように選択した接続先候補を、接続先紹介要求を行った端末装置2へ返信して通知する(ステップS210)。
ステップS208において、端末装置2から接続先紹介要求を受信していないと判定すると(ステップS208:NO)、制御部430は、端末装置2からトポロジー参加報告があったか否かを判定する(ステップS211)。
ステップS211において、端末装置2からトポロジー参加報告があったと判定すると(ステップS211:YES)、制御部430は、このトポロジー参加報告に含まれる端末装置の所在情報を取り出し、トポロジーデータベース411の更新処理を行う(ステップS212)。すなわち、制御部430は、トポロジーの変動をトポロジーデータベース411へ登録する。
ステップS211において端末装置2からトポロジー参加報告がないと判定したとき(ステップS211:NO)、及び、ステップS203、S207、S210、S212の処理が終了したとき、制御部430は、接続管理装置3のサービス終了の操作が行われたか否かを判定する(ステップS204)。サービスの終了操作が行われていないと判定すると(ステップS204:NO)、処理をステップS202へ戻し、接続管理装置3のサービス終了の操作が行われたと判定すると(ステップS204:YES)、処理を終了する。
(無線通信の実施形態)
本発明では、近接する端末装置との第2通信手段(無線通信手段)として、無線LANによる通信方法を例示しているが、無線通信可能なものであれば任意の方法を用いてよい。例えば、無線LANよりも通信範囲が広いWiMAX(Worldwide Interoperability for Microwave Access)のような通信方法を選択してもよい。
以上、本発明の実施の形態のうちのいくつかを図面に基づいて詳細に説明したが、これらは例示であり、前記[発明の開示]の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。