(57)【特許請求の範囲】
【請求項１】
Ｐ２Ｐネットワークにより、上流の端末装置から映像ストリームのデータを受信してバッファメモリに蓄積し、再生位置を示す視聴ポイントのデータを再生し、前記バッファメモリから映像ストリームのデータを読み出して下流の端末装置へ送信する端末装置において、
前記上流の端末装置のバッファメモリに蓄積されている映像ストリームのデータのうち前記上流の端末装置における視聴ポイント以降のデータを識別する情報を含むバッファマップを取得するためのバッファマップ要求を、前記上流の端末装置へ送信し、前記上流の端末装置から前記バッファマップを取得するバッファマップ取得手段と、
前記バッファマップ取得手段により取得されたバッファマップに基づいて、再生中の上流の端末装置から取得されたバッファマップを選択するバッファマップ選択手段と、
前記バッファマップ選択手段により選択されたバッファマップに基づいて、当該端末装置の視聴ポイントを設定する視聴ポイント設定手段と、
前記バッファマップ取得手段により取得されたバッファマップに基づいて、前記視聴ポイント設定手段により設定された当該端末装置の視聴ポイント以降のデータを取得するための要求を、前記上流の端末装置へ送信し、前記上流の端末装置から要求に対応するデータを受信し、前記バッファメモリに蓄積するデータ取得手段と、
を備えたことを特徴とする端末装置。
【請求項２】
請求項１に記載の端末装置において、
前記バッファマップ選択手段は、
再生中の上流の端末装置から取得されたバッファマップが１つの場合、前記１つのバッファマップを選択し、再生中の上流の端末装置から取得されたバッファマップが複数の場合、前記複数のバッファマップの中から、前記複数のバッファマップが示すそれぞれの視聴ポイントのうち最新の視聴ポイントを有するバッファマップを選択する、ことを特徴とする端末装置。
【請求項３】
請求項１または２に記載の端末装置において、
前記視聴ポイント設定手段は、
前記バッファマップ選択手段により選択されたバッファマップにより識別される最も古いデータを特定し、前記最も古いデータの位置から所定数新しいデータの位置を、当該端末装置の視聴ポイントに設定する、ことを特徴とする端末装置。
【請求項４】
請求項１から３までのいずれか一項に記載の端末装置において、
前記データ取得手段は、
さらに、前記バッファマップ取得手段により取得されたバッファマップのうち、最新のデータが識別されるバッファマップを特定し、前記最新のデータの次に新しいデータを取得するための要求を、前記特定したバッファマップの取得先である上流の端末装置へ送信し、前記上流の端末装置から要求に対応するデータを受信し、前記バッファメモリに蓄積する、ことを特徴とする端末装置。
【請求項５】
コンピュータを、請求項１から４までのいずれか一項に記載の端末装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライブ映像配信ネットワーク、ソーシャルネットワーク連携サービス、アプリケーションレイヤマルチキャスト技術等におけるＰ２Ｐネットワークサービスに関し、特に、多数の利用者に低遅延で安定したサービスを提供するＰ２Ｐネットワークサービスに用いる端末装置及びプログラムに関するものである。
【背景技術】
【０００２】
従来、ライブ映像等を配信するＰ２Ｐネットワークサービスが知られている。Ｐ２Ｐネットワークサービスは、ネットワーク上で対等な関係にある端末装置間を相互に接続することにより、ライブ映像等のデータを送受信する通信サービスをいう。Ｐ２Ｐネットワークサービスを実現するための端末装置間の接続構造の例として、メッシュ型、ツリー型があり、端末装置間でデータを中継する手法の例として、プル型、プッシュ型がある。以下に説明するＰ２Ｐネットワークは、接続構造がメッシュ型であり、データ中継手法がプル型であるものとする。
【０００３】
図１３（１）は、Ｐ２Ｐネットワークにおけるメッシュ型接続構造を説明する図であり、図１３（２）は、Ｐ２Ｐネットワークにおけるプル型中継手法を説明する図である。図１３（１）を参照して、メッシュ型接続構造は、上流の端末装置と下流の端末装置との間の接続数の関係が、ｍ：ｎ（ｍ，ｎは正の整数）となる構造をいう。このようなメッシュ型接続構造のＰ２Ｐネットワークにおいて、例えば、波長分割多重伝送を行うことで、安定した通信及びスケーラビリティを実現する手法が提案されている（例えば、特許文献１を参照）。
【０００４】
図１３（２）を参照して、プル型中継手法は、下流の端末装置からの要求に従って上流の端末装置がデータを送信する手法である。具体的には、端末装置１００Ａ，１００Ｂ，１００Ｃを含むＰ２Ｐネットワークの通信システムにおいて、以下のステップＳ１〜ステップＳ３の処理を行うことにより、上流の端末装置１００Ａ，１００Ｂの保持するデータが下流の端末装置１００Ｃへ送信される。まず、上流の端末装置１００Ａは、保持しているデータのシーケンス番号（データチャンク（ＤＣ）番号）をバッファマップとして下流の端末装置１００Ｃへ通知する（ステップＳ１）。ＤＣについては後述する。端末装置１００Ｃは、端末装置１００Ａからバッファマップを受信し、バッファマップが示すシーケンス番号に基づいて、保持していないデータを取得するための要求を端末装置１００Ａへ通知する（ステップＳ２）。そして、端末装置１００Ａは、端末装置１００Ｃからの要求に従って、要求されたデータを端末装置１００Ｃへ送信する（ステップＳ３）。例えば、端末装置１００Ｃは、端末装置１００Ａ，１００Ｂから取得したバッファマップが示すシーケンス番号に基づいて、データ「１」「３」を取得するための要求を端末装置１００Ａへ送信することでデータ「１」「３」を受信し、データ「２」「４」を取得するための要求を端末装置１００Ｂへ送信することでデータ「２」「４」を受信する。これにより、端末装置１００Ｃは、上流の端末装置１００Ａ，１００Ｂからデータ「１」「２」「３」「４」を取得することができる。
【０００５】
また、端末装置１００Ｃは、自らが保持しているデータのシーケンス番号をバッファマップとして、図示しない下流の端末装置へ通知する。そして、端末装置１００Ｃは、下流の端末装置からの要求に従って、要求されたデータを下流の端末装置へ送信する。これにより、端末装置１００Ｃは、下流の端末装置へデータを送信することができる。
【０００６】
このように、Ｐ２Ｐネットワークは、ライブ映像等の配信サービスを受ける複数の端末装置により構成されるＰ２Ｐグループを形成し、１台の端末装置に対し、上流側に複数の端末装置を接続し、下流側に複数の端末装置を接続する。１台の端末装置は、複数の上流の端末装置からデータを取得し、取得したデータを中継することで複数の下流の端末装置へデータを提供する。このようなＰ２Ｐネットワークの通信システムによれば、端末装置は、ライブ映像等を配信する配信サーバから直接的にデータを受信することなく、上流の端末装置からデータを受信するから、効率的な配信サービスを実現することができる。
【０００７】
図１４は、従来のＰ２Ｐネットワークにおける処理の概要を説明する図である。このＰ２Ｐネットワークを含む通信システムは、ライブ映像等のデータを配信する図示しない配信サーバ、配信サーバからのデータを中継する複数の端末装置、及び、Ｐ２Ｐネットワークに参加している端末装置のアドレスの情報等を管理する図示しないディレクトリサーバを備えて構成される。このようなＰ２Ｐネットワークに新たに端末装置１００Ｃが参加した場合、端末装置１００Ｃは、ディレクトリサーバから、上流の端末装置１００Ａ，１００Ｂに関するアドレスの情報等を取得する。そして、端末装置１００Ｃは、上流の端末装置１００Ａ，１００Ｂのバッファメモリに蓄積されている視聴ポイント以降（再生前）のライブ映像等のデータに関する情報が示されたバッファマップＡ，Ｂを取得する。視聴ポイントは、映像データが再生される現在の位置であって、配信サービスを受ける利用者が視聴する現時点の映像データの位置を示している。ここで、端末装置１００Ｃは、先に、端末装置１００ＢからバッファマップＢを取得し（ステップＳ１４０１）、その後に、端末装置１００ＡからバッファマップＡを取得するものとする（ステップＳ１４０２）。
【０００８】
バッファマップは、バッファメモリに蓄積されている視聴ポイント以降の映像データの状態（データチャンクの蓄積状態）を示す保管情報であり、データチャンク番号を識別可能な情報からなる。データチャンク（ＤＣ）とは、映像データを所定のサイズで分割したときのデータをいい、例えば１秒間の映像データをいう。データチャンク番号（ＤＣ番号）とは、映像データを所定のサイズ毎のＤＣに時間軸上で順番に分割したときのＤＣの番号をいい、映像データのＤＣを識別するためのシーケンシャルな番号をいう。
【０００９】
いま、端末装置１００Ａのバッファメモリには、ＤＣ１０〜ＤＣ２１が蓄積されており、端末装置１００Ａは再生中であって、その視聴ポイントがＤＣ１５であるとする。また、端末装置１００Ｂのバッファメモリには、ＤＣ１３，ＤＣ１４が蓄積されており、端末装置１００Ｂは再生中でなく（非再生中であって）、その視聴ポイントがＤＣ１３であるとする。端末装置Ｂが非再生中であるのは、再生スレッショルドを満たすデータがバッファメモリに蓄積されていないからである。再生スレッショルドは、非再生中のときに再生を開始するために必要なデータ量の位置を示している。つまり、端末装置１００Ｂは、再生を開始するために、ＤＣが再生スレッショルドの位置まで蓄積されるのを待って、視聴ポイントの位置のＤＣを読み出して再生を行う。図１４に示すように、バッファマップＡは、視聴ポイント以降のＤＣ１５〜ＤＣ２１が蓄積されていることを示しており、バッファマップＢは、視聴ポイント以降のＤＣ１３，ＤＣ１４が蓄積されていることを示している。
【００１０】
端末装置１００Ｃは、取得したバッファマップＡ，Ｂのうちの先に取得したバッファマップＢを選択し、選択したバッファマップＢが示す最も古い（過去の）データを特定し、そのデータの位置を視聴ポイントに設定する。図１４では、バッファマップＢが示す最も古いデータはＤＣ１３であるから、端末装置１００Ｃは、ＤＣ１３の位置を視聴ポイントに設定する。そして、端末装置１００Ｃは、バッファマップＡ，Ｂに基づいて、データの取得先である端末装置１００Ａまたは端末装置１００Ｂを決定し、上流の端末装置１００Ａ，１００Ｂへデータ要求を送信し、データ要求に対応するデータを受信して自らのバッファメモリに蓄積する。
【００１１】
端末装置１００Ｃは、端末装置１００ＢからＤＣ１３，ＤＣ１４を取得し（ステップＳ１４０３）、端末装置１００ＡからＤＣ１５〜ＤＣ２１を取得する（ステップＳ１４０４）。これにより、端末装置１００ＣのバッファメモリにはＤＣ１３〜ＤＣ２１が蓄積され、再生スレッショルドを満たすＤＣがバッファメモリに蓄積されるから、端末装置１００Ｃは、再生を開始することができる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】国際公開第２００６／０４６５７６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、図１４に示した従来のＰ２Ｐネットワークにおいて、端末装置１００Ｃの視聴ポイントはＤＣ１３の位置であり、再生中の端末装置１００Ａの視聴ポイントはＤＣ１５の位置であるから、Ｐ２Ｐネットワークに新たに参加した端末装置１００Ｃの視聴ポイントは、既に参加していた再生中の端末装置１００Ａに比べ、ＤＣ２つ分遅延している。これは、最初に取得したバッファマップＢの端末装置１００Ｂが非再生中であるため、端末装置１００Ｂの視聴ポイントが、再生中の端末装置１００Ａよりも遅延しているからである。
【００１４】
このような視聴ポイントの遅延が下流の端末装置において繰り返されると、視聴ポイントの遅延が積算されてしまう。例えば、Ｐ２Ｐネットワークによる配信サービスと、ソーシャルネットワーク等の他のサービスとを連携させ、これらのサービスを同時に利用する場合には、配信サービスにより提供されるスポーツ中継のライブ映像が、他のサービスにより提供されるそのスポーツの結果情報よりも遅れてしまうことがあり得る。この場合、スポーツ中継のライブ映像よりもスポーツの勝敗等の結果が先に提供されてしまうから、利用者は、実際のライブ映像よりも先にその結果を知ることになり、高品質のサービスを受けることができない。
【００１５】
また、ある端末装置における視聴ポイントの遅延が、他の端末装置よりも大きくなると、当該端末装置の取得すべきデータが上流の端末装置に存在する確率が低くなり、結果としてデータの中継を不安定にし、配信サービスの品質が低下してしまう。
【００１６】
そこで、本発明は前記課題を解決するためになされたものであり、その目的は、Ｐ２Ｐネットワークを含む通信システムにおいて、低遅延で安定した配信サービスを実現可能な端末装置及びプログラムを提供することにある。
【課題を解決するための手段】
【００１７】
前記課題を解決するため、本発明による請求項１の端末装置は、Ｐ２Ｐネットワークにより、上流の端末装置から映像ストリームのデータを受信してバッファメモリに蓄積し、再生位置を示す視聴ポイントのデータを再生し、前記バッファメモリから映像ストリームのデータを読み出して下流の端末装置へ送信する端末装置において、前記上流の端末装置のバッファメモリに蓄積されている映像ストリームのデータのうち前記上流の端末装置における視聴ポイント以降のデータを識別する情報を含むバッファマップを取得するためのバッファマップ要求を、前記上流の端末装置へ送信し、前記上流の端末装置から前記バッファマップを取得するバッファマップ取得手段と、前記バッファマップ取得手段により取得されたバッファマップに基づいて、再生中の上流の端末装置から取得されたバッファマップを選択するバッファマップ選択手段と、前記バッファマップ選択手段により選択されたバッファマップに基づいて、当該端末装置の視聴ポイントを設定する視聴ポイント設定手段と、前記バッファマップ取得手段により取得されたバッファマップに基づいて、前記視聴ポイント設定手段により設定された当該端末装置の視聴ポイント以降のデータを取得するための要求を、前記上流の端末装置へ送信し、前記上流の端末装置から要求に対応するデータを受信し、前記バッファメモリに蓄積するデータ取得手段と、を備えたことを特徴とする。
【００１８】
また、本発明による請求項２の端末装置は、請求項１に記載の端末装置において、前記バッファマップ選択手段が、再生中の上流の端末装置から取得されたバッファマップが１つの場合、前記１つのバッファマップを選択し、再生中の上流の端末装置から取得されたバッファマップが複数の場合、前記複数のバッファマップの中から、前記複数のバッファマップが示すそれぞれの視聴ポイントのうち最新の視聴ポイントを有するバッファマップを選択する、ことを特徴とする。
【００１９】
また、本発明による請求項３の端末装置は、請求項１または２に記載の端末装置において、前記視聴ポイント設定手段が、前記バッファマップ選択手段により選択されたバッファマップにより識別される最も古いデータを特定し、前記最も古いデータの位置から所定数新しいデータの位置を、当該端末装置の視聴ポイントに設定する、ことを特徴とする。
【００２０】
また、本発明による請求項４の端末装置は、請求項１から３までのいずれか一項に記載の端末装置において、前記データ取得手段が、さらに、前記バッファマップ取得手段により取得されたバッファマップのうち、最新のデータが識別されるバッファマップを特定し、前記最新のデータの次に新しいデータを取得するための要求を、前記特定したバッファマップの取得先である上流の端末装置へ送信し、前記上流の端末装置から要求に対応するデータを受信し、前記バッファメモリに蓄積する、ことを特徴とする。
【００２１】
さらに、本発明による請求項５のプログラムは、コンピュータを、請求項１から４までのいずれか一項に記載の端末装置として機能させることを特徴とする。
【発明の効果】
【００２２】
以上のように、本発明によれば、端末装置は、低遅延で安定した配信サービスを実現することが可能となる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施形態によるＰ２Ｐネットワークを含む通信システムの全体構成を示す概略図である。
【図２】本発明の実施形態によるＰ２Ｐネットワークの処理の概要を説明する図である。
【図３】本発明の実施形態による端末装置の構成を示すブロック図である。
【図４】送受信手段の構成を示すブロック図である。
【図５】バッファメモリに蓄積されるデータの量と、視聴ポイント、パッチングスレッショルド及び再生スレッショルドとの関係を説明する図である。
【図６】視聴ポイント及び再生スレッショルドを基準位置としたデータ再生処理を示すフローチャートである。
【図７】パッチングスレッショルドを基準位置としたパッチング処理を示すフローチャートである。
【図８】端末装置の処理を示すフローチャートである。
【図９】図８に示す視聴ポイント設定処理（ステップＳ８０３）の詳細を示すフローチャートである。
【図１０】図８に示す映像データ取得処理（ステップＳ８０４）の詳細を示すフローチャートである。
【図１１】図８に示す映像データ送信処理（ステップＳ８０５）の詳細を示すフローチャートである。
【図１２】ネットワーク参加処理を説明する図である。
【図１３】（１）は、Ｐ２Ｐネットワークにおけるメッシュ型接続構造を説明する図である。（２）は、Ｐ２Ｐネットワークにおけるプル型中継手法を説明する図である。
【図１４】従来のＰ２Ｐネットワークにおける処理の概要を説明する図である。
【発明を実施するための形態】
【００２４】
以下、本発明を実施するための形態について図面を用いて詳細に説明する。以下に説明する実施例は、Ｐ２Ｐネットワークを構成する複数の端末装置、ライブ映像等の映像ストリームを配信する配信サーバ、端末装置からの要求に従って映像データを送信するパッチングサーバ、及び、端末装置のアドレス等を管理するディレクトリサーバを含む通信システムを対象とする。
【００２５】
本実施例の端末装置は、上流の端末装置から取得したバッファマップのうち、再生中の端末装置から取得したバッファマップを選択し、選択したバッファマップに基づいて視聴ポイントを設定し、上流の端末装置から視聴ポイント以降のデータを取得することを特徴とする。これにより、例えば、一部の上流の端末装置が非再生中であり、他の上流の端末装置が再生中の場合、Ｐ２Ｐネットワークに新たに参加する端末装置は、再生中の上流の端末装置から取得したバッファマップに基づいて視聴ポイントを設定するから、当該端末装置の視聴ポイントは、再生中の上流の端末装置の視聴ポイントに近くなり、大きく遅延することがない。したがって、多数の利用者に低遅延で安定した配信サービスを提供することが可能となる。
【００２６】
〔Ｐ２Ｐネットワークの通信システム〕
図１は、本発明の実施形態によるＰ２Ｐネットワークを含む通信システムの全体構成を示す概略図である。この通信システム５は、図１３（１）（２）に示したメッシュ型接続構造及びプル型中継手法のＰ２Ｐネットワークを構成し、複数の端末装置（以下、「ノード」という。）１Ａ，１Ｂ，１Ｃ，・・・（総称して「ノード１」という。）、配信サーバ２、パッチングサーバ３及びディレクトリサーバ４を備えている。これらの装置は、インターネット等の通信回線を介して接続される。
【００２７】
ノード１は、Ｐ２Ｐネットワークに新たに参加したとき等の所定のタイミングにて、視聴ポイント設定処理により、自らの視聴ポイントを設定する。また、ノード１は、配信サーバ２から配信された映像ストリームのデータを、上流側に接続されたノード１（以下、「上流ノード１」という。）から受信して蓄積し、下流側に接続されたノード１（以下、「下流ノード１」という。）へ送信すると共に、データ再生処理により、蓄積した視聴ポイントのデータをデコードして再生する。また、ノード１は、蓄積している映像ストリームのデータが所定量以下になったときに行うパッチング処理により、パッチングサーバ３から映像ストリームのデータを受信する。視聴ポイント設定処理、データ再生処理及びパッチング処理については後述する。
【００２８】
配信サーバ２は、映像ストリームをエンコードし、エンコードした映像ストリームのデータをＤＣ毎に、Ｐ２Ｐネットワークによりそれぞれのノード１へ配信すると共に、パッチングサーバ３へ送信する。
【００２９】
パッチングサーバ３は、配信サーバ２から映像ストリームのデータを連続的に受信して記憶装置に蓄積する。また、パッチングサーバ３は、ノード１からデータ要求を受信し、データ要求に対応した映像ストリームのデータを記憶装置から読み出し、読み出したデータを、データ要求を送信してきたノード１へ送信する。
【００３０】
ディレクトリサーバ４は、Ｐ２Ｐネットワークに参加しているノード１、配信サーバ２及びパッチングサーバ３のアドレス等の情報を管理する。ディレクトリサーバ４は、Ｐ２Ｐネットワークに新たに参加したノード１から当該ノード１に関する情報を受信し、通信システム５を構成する配信サーバ２及びパッチングサーバ３に関する情報、Ｐ２Ｐネットワークに参加している全てまたは一部のノード１に関する情報、並びに、上流ノード１に関する情報及び下流ノード１に関する情報を、新たに参加したノード１へ送信する。これにより、新たに参加したノード１は、配信サーバ２、パッチングサーバ３、上流ノード１及び下流ノード１との間で通信を行うことができる。
【００３１】
〔実施例〕
次に、実施例について具体的に説明する。本実施例のノード１は、前述のとおり、上流ノード１から取得したバッファマップのうち、再生中の上流ノード１から取得したバッファマップを選択し、選択したバッファマップに基づいて視聴ポイントを設定し、上流ノード１から視聴ポイント以降のデータを取得する。図２は、実施例におけるＰ２Ｐネットワークの処理の概要を説明する図である。図２に示すように、ノード１Ｃの上流ノードがノード１Ａ，１Ｂであり、ノード１Ａのバッファメモリには、再生後のＤＣ１０〜ＤＣ１４及び再生前のＤＣ１５〜ＤＣ２１が蓄積され、視聴ポイントがＤＣ１５の位置に設定され、ノード１Ａは再生中であるものとする。また、ノード１Ｂのバッファメモリには、再生前のＤＣ１３，ＤＣ１４が蓄積され、視聴ポイントがＤＣ１３に設定され、ノード１Ｂは非再生中であるものとする。
【００３２】
ノード１Ｃは、Ｐ２Ｐネットワークへ参加すると、図示しないディレクトリサーバ４から上流ノード１Ａ，１Ｂに関するアドレスの情報等を受信し、上流ノード１Ａ，１Ｂからバッファマップを取得する。ここで、ノード１Ｃは、先に、上流ノード１ＢからバッファマップＢを取得し（ステップＳ２０１）、その後に、上流ノード１ＡからバッファマップＡを取得するものとする（ステップＳ２０２）。
【００３３】
バッファマップＡ，Ｂには、視聴ポイント以降（再生前）のデータに関する情報に加え、再生状況（再生中または非再生中）、視聴ポイント及び再生スレッショルドの情報も示されている。図２では、上流ノード１Ａから取得するバッファマップＡには、再生前のＤＣ１５〜ＤＣ２１に関する情報、再生中、視聴ポイント：ＤＣ１５、再生スレッショルド：ＤＣ２１が示されており、上流ノード１Ｂから取得するバッファマップＢには、再生前のＤＣ１３，ＤＣ１４に関する情報、非再生中、視聴ポイント：ＤＣ１３、再生スレッショルド：ＤＣ１９が示されている。
【００３４】
ノード１Ｃは、取得したバッファマップＡ，Ｂのうち、再生中のノード１Ａから取得したバッファマップＡを選択し、選択したバッファマップＡが示す最も古いＤＣ１５を特定し、特定したＤＣ１５から１つ新しいＤＣ１６の位置を視聴ポイントに設定する。そして、ノード１Ｃは、バッファマップＡ，Ｂに基づいて、データの取得先である上流ノード１Ａまたは上流ノード１Ｂを決定し、上流ノード１Ａ，１Ｂへデータ要求を送信し、データ要求に対応するデータを受信して自らのバッファメモリに蓄積する。
【００３５】
図２に示した例では、ノード１Ｃは、バッファマップＡに基づいて、上流ノード１ＡからＤＣ１６〜ＤＣ２１を取得し（ステップＳ２０３）、バッファメモリに蓄積する（ステップＳ２０４）。そして、ノード１Ｃは、取得したバッファマップＡ，Ｂが示す最新のＤＣ２１を基準にして次に新しいＤＣ２２を、上流ノード１Ａから取得し（ステップＳ２０５）、バッファメモリに蓄積する（ステップＳ２０６）。これにより、バッファメモリに蓄積されたデータは、再生スレッショルドに到達する。そして、ノード１Ｃは、バッファメモリから視聴ポイントのＤＣ１６を読み出し、再生を開始する（ステップＳ２０７）。
【００３６】
このように、バッファマップに、視聴ポイント以降のデータに関する情報に加え、再生状況（再生中または非再生中）、視聴ポイント及び再生スレッショルドの情報も含めるようにしたから、ノード１Ｃは、再生中の上流ノード１Ａから取得したバッファマップＡに基づいて視聴ポイントを設定することができる。具体的には、ノード１Ｃは、バッファマップＡの示すデータのうち最も古いデータ（視聴ポイントのデータ）に基づいて視聴ポイントを設定し、設定した視聴ポイント以降のデータを取得することができる。これにより、ノード１Ｃの視聴ポイントは、再生中の上流ノード１Ａの視聴ポイントに近くなり、大きく遅延することがない。したがって、再生中の上流ノード１Ａに対するノード１Ｃの視聴ポイントの遅延を小さくすることができ、多数の利用者に低遅延で安定した配信サービスを提供することが可能となる。
【００３７】
また、ノード１Ｃは、再生中の上流ノード１Ａから取得したバッファマップＡの示すデータのうち最も古いデータ（視聴ポイント）よりも１つ新しいデータの位置を視聴ポイントに設定するようにした。これにより、ノード１Ｃの視聴ポイントは、再生中の上流ノード１Ａの視聴ポイントに一層近くなる。したがって、一層低遅延で安定した配信サービスを提供することが可能となる。
【００３８】
また、ノード１Ｃは、バッファマップＡの示す最新のデータ（ＤＣ２１）の次に新しいデータ（ＤＣ２２：バッファマップＡには示されていないＤＣ２２）が上流ノード１Ａに蓄積されることを予測し、上流ノード１Ａから予測対象のデータ（ＤＣ２２）を取得するようにした。これにより、ノード１ＣはＤＣ２２まで再生することができるから、再生中の上流ノード１Ａに対するノード１Ｃの視聴ポイントの遅延をさらに小さくすることができ、一層低遅延で安定した配信サービスを提供することが可能となる。
【００３９】
（ノードの構成）
次に、ノード１の構成について説明する。図３は、ノード１の構成を示すブロック図である。このノード１は、送受信手段１０、バッファメモリ１１、再生手段１２、バッファマップ保存手段１３、バッファマップ作成手段１４及びバッファマップ比較手段（バッファマップ選択手段）１５を備えている。図３に示す構成は、図１に示した通信システム５に含まれるノード１Ａ，１Ｂ，１Ｃ，・・・に共通である。送受信手段１０は、配信サーバ２、パッチングサーバ３、ディレクトリサーバ４、上流ノード１及び下流ノード１との間で通信を行う。
【００４０】
図４は、図３に示した送受信手段１０の構成を示すブロック図である。送受信手段１０は、ネットワーク参加処理手段５１、バッファマップ取得手段５２、視聴ポイント設定手段５３、データ取得手段５４、パッチング手段５５、バッファマップ送信手段５６及びデータ送信手段５７等を備えている。
【００４１】
送受信手段１０のネットワーク参加処理手段５１は、当該ノード１がＰ２Ｐネットワークに新たに参加するときに、当該ノード１のアドレス等の情報を含む参加要求をディレクトリサーバ４へ送信する。これにより、ディレクトリサーバ４は、当該ノード１に関する情報を管理する。また、ネットワーク参加処理手段５１は、ディレクトリサーバ４から、Ｐ２Ｐネットワークに参加しているノード１に関する情報、配信サーバ２及びパッチングサーバ３に関する情報、並びに、上流ノード１に関する情報及び下流ノード１に関する情報を受信する。これにより、当該ノード１は、上流ノード１及び下流ノード１、配信サーバ２及びパッチングサーバ３との間で通信を行うことができる。
【００４２】
バッファマップ取得手段５２は、バッファマップ保存手段１３からの取得要求に基づいて、所定の時間間隔にて、バッファマップを取得するためのバッファマップ要求を上流ノード１へ送信し、バッファマップを上流ノード１から受信してバッファマップ保存手段１３に出力する。上流ノード１から受信したバッファマップは、バッファマップ保存手段１３によりバッファメモリ１１に保存され、所定の時間間隔にて更新される。また、バッファマップ取得手段５２は、受信した上流ノード１のバッファマップをバッファマップ比較手段１５に出力する。これにより、バッファマップ比較手段１５は、上流ノード１から取得したバッファマップのうち、再生中の上流ノード１から取得したバッファマップを選択する。
【００４３】
視聴ポイント設定手段５３は、当該ノード１がＰ２Ｐネットワークに参加して上流ノード１からバッファマップを取得した後等の所定のタイミングにて、バッファマップ比較手段１５から比較結果のバッファマップを入力し、このバッファマップに基づいて視聴ポイントを設定する。
【００４４】
データ取得手段５４は、視聴ポイント以降（再生前）の未取得の映像データを取得するために、上流ノード１から取得したバッファマップをバッファメモリ１１から読み出し、読み出したバッファマップに基づいて、取得したいデータが蓄積されている上流ノード１（データの取得先）を特定し、データ要求を取得先の上流ノード１へ送信する。そして、データ取得手段５４は、取得先の上流ノード１からデータ要求に対応するデータを受信し、バッファメモリ１１に蓄積する。
【００４５】
パッチング手段５５は、パッチング処理の際に、データを取得するためのデータ要求をパッチングサーバ３へ送信し、パッチングサーバ３からデータ要求に対応するデータを受信し、バッファメモリ１１に蓄積する。
【００４６】
バッファマップ送信手段５６は、下流ノード１からバッファマップ要求を受信し、バッファマップ作成手段１４により作成された当該ノード１のバッファマップを、バッファマップ要求を送信してきた下流ノード１へ送信する。
【００４７】
データ送信手段５７は、下流ノード１からデータ要求を受信し、データ要求に対応したデータをバッファメモリ１１から読み出し、読み出したデータを、データ要求を送信してきた下流ノード１へ送信する。
【００４８】
図３に戻って、バッファメモリ１１には、映像データを所定のサイズに分割したＤＣがそのＤＣ番号と共に、時間軸上のシーケンシャル番号順に蓄積されている。また、バッファメモリ１１には、上流ノード１のバッファマップが保存されている。バッファメモリ１１の詳細については後述する。
【００４９】
再生手段１２は、バッファメモリ１１から視聴ポイントのデータを読み出して再生を行う。再生手段１２によるデータ再生処理の詳細については後述する。バッファマップ保存手段１３は、所定の時間間隔にて、上流ノード１のバッファマップを取得するための取得要求を送受信手段１０に出力し、送受信手段１０から上流ノード１のバッファマップを入力し、バッファメモリ１１に保存する。
【００５０】
バッファマップ作成手段１４は、所定の時間間隔にて、バッファメモリ１１に蓄積されたデータに基づいて、当該ノード１のバッファマップを作成する。そして、バッファマップ作成手段１４は、作成したバッファマップを送受信手段１０に出力する。バッファマップ作成手段１４により作成されたバッファマップは、下流ノード１からのバッファマップ要求に従って送信される。
【００５１】
具体的には、バッファマップ作成手段１４は、前述のとおり、バッファメモリ１１に蓄積されている視聴ポイント以降のデータに関する情報に加え、再生状況（再生中または非再生中）、視聴ポイント及び再生スレッショルドの情報を示すバッファマップを作成する。
【００５２】
バッファマップ比較手段１５は、送受信手段１０のバッファマップ取得手段５２から上流ノード１のバッファマップを入力し、入力した複数のバッファマップを比較することで、再生中の上流ノード１から取得したバッファマップを選択する。そして、バッファマップ比較手段１５は、選択したバッファマップが１つの場合、選択したバッファマップを比較結果として送受信手段１０の視聴ポイント設定手段５３に出力し、選択したバッファマップが複数の場合、１つのバッファマップを特定し、特定したバッファマップを比較結果として送受信手段１０の視聴ポイント設定手段５３に出力する。
【００５３】
（バッファメモリ）
図５は、バッファメモリ１１に蓄積されるデータの量と、視聴ポイント、パッチングスレッショルド及び再生スレッショルドとの関係を説明する図である。図５に示すように、バッファメモリ１１には、例えば、１４個のＤＣを蓄積する領域が確保されており、時間軸上に番号が若い順にＤＣが蓄積される。バッファメモリ１１は、新たなＤＣが蓄積されるときに、最も古いＤＣが廃棄される。図５の例は、バッファメモリ１１にＤＣ９〜ＤＣ２２が蓄積されており、新たなＤＣ２２が蓄積されたことにより、最も古いＤＣ８が廃棄されたことを示している。
【００５４】
また、バッファメモリ１１には、視聴ポイントを基準位置にして、これよりも番号が新しい方、すなわちこれから視聴するデータの所定位置にパッチングスレッショルド及び再生スレッショルドが予め設定されている。視聴ポイントは、再生手段１２により映像データが再生される現在の位置であって、当該ノード１を用いて配信サービスを受ける利用者が視聴する現時点の映像データの位置を示している。
【００５５】
パッチングスレッショルドは、上流ノード１の代わりにパッチングサーバ３からＤＣが取得される位置を示している。バッファメモリ１１に蓄積されたＤＣの位置がパッチングスレッショルド以下になると、パッチング処理が行われる。送受信手段１０のパッチング手段５５は、バッファメモリ１１を検索することにより、再生に伴ってＤＣが減少し、バッファメモリ１１の先頭から隙間なく蓄積された末尾のＤＣの位置を示すポインタがパッチングスレッショルド以下になった場合に（または、視聴ポイントからパッチングスレッショルドまでの間に存在しないＤＣがある場合に（ＤＣは存在するが、連番のＤＣが抜けている場合に、））、パッチングサーバ３からＤＣを取得する。再生スレッショルドは、再生手段１２が再生を最初に開始するために必要なデータ量の位置、または再生を再開するために必要なデータ量の位置を示している。再生手段１２は、バッファメモリ１１からＤＣを読み出して再生を開始または再開する際に、ＤＣが再生スレッショルドの位置まで蓄積されるのを待って、視聴ポイントの位置のＤＣを読み出して再生を行う。
【００５６】
（データ再生処理）
図６は、視聴ポイント及び再生スレッショルドを基準位置としたデータ再生処理を示すフローチャートである。このデータ再生処理は、再生手段１２により行われる。再生手段１２は、再生中であるか否かを判定し（ステップＳ６０１）、再生中であると判定した場合（ステップＳ６０１：Ｙ）、ステップＳ６０２へ移行し、再生中でない（非再生中である、再生が停止中である）と判定した場合（ステップＳ６０１：Ｎ）、ステップＳ６０５へ移行する。
【００５７】
再生手段１２は、再生中の場合、ステップＳ６０１から移行してバッファメモリ１１を検索し、バッファメモリ１１の先頭から隙間なく蓄積された末尾のＤＣの位置を示すポインタが視聴ポイント以下であるか否かを判定する（ステップＳ６０２）。再生手段１２は、ステップＳ６０２において、ＤＣのポインタが視聴ポイント以下でないと判定した場合（ステップＳ６０２：Ｎ）、再生を継続する（ステップＳ６０３）。つまり、再生手段１２は、バッファメモリ１１から視聴ポイントのＤＣを読み出し、ＤＣにより映像データを再生する。一方、再生手段１２は、ステップＳ６０２において、ＤＣのポインタが視聴ポイント以下であると判定した場合（ステップＳ６０２：Ｙ）、再生を停止する（ステップＳ６０４）。
【００５８】
再生手段１２は、再生中でない（非再生中である、再生が停止中である）場合、ステップＳ６０１から移行してバッファメモリ１１を検索し、ＤＣのポインタが再生スレッショルド以下であるか否かを判定する（ステップＳ６０５）。再生手段１２は、ステップＳ６０５において、ＤＣのポインタが再生スレッショルド以下でないと判定した場合（ステップＳ６０５：Ｎ）、再生を開始する（ステップＳ６０６）。つまり、再生手段１２は、バッファメモリ１１から視聴ポイントのＤＣを読み出し、ＤＣにより映像データを再生する。一方、再生手段１２は、ステップＳ６０５において、ＤＣのポインタが再生スレッショルド以下であると判定した場合（ステップＳ６０５：Ｙ）、再生停止を継続する。
【００５９】
このように、データ再生処理を行う再生手段１２は、バッファメモリ１１から視聴ポイントのＤＣを読み出し、ＤＣにより映像データを再生し、ＤＣが視聴ポイント以下になった場合に再生を停止し、ＤＣが再生スレッショルドの位置まで蓄積されるのを待って、再生を開始する。
【００６０】
（パッチング処理）
図７は、パッチングスレッショルドを基準位置としたパッチング処理を示すフローチャートである。このパッチング（手当て）処理は、送受信手段１０のパッチング手段５５により行われ、バッファメモリ１１に蓄積されたＤＣのポインタがパッチングスレッショルド以下になった場合に、上流ノード１からＤＣを取得する代わりに、緊急にパッチングサーバ３からＤＣを取得するものである。
【００６１】
送受信手段１０のパッチング手段５５は、バッファメモリ１１を検索し、ＤＣのポインタがパッチングスレッショルド以下であるか否かを判定し（ステップＳ７０１）、ＤＣのポインタがパッチングスレッショルド以下であると判定した場合（ステップＳ７０１：Ｙ）、パッチング処理を行う。すなわち、パッチング手段５５は、データ要求を上流ノード１へ送信する代わりに、パッチングサーバ３へ送信し（ステップＳ７０２）、パッチングサーバ３からデータ（ＤＣ）を受信し、ＤＣをバッファメモリ１１に蓄積する（ステップＳ７０３）。一方、パッチング手段５５は、ステップＳ７０１において、ＤＣのポインタがパッチングスレッショルド以下でないと判定した場合（ステップＳ７０１：Ｎ）、パッチング処理を行わない。
【００６２】
このように、パッチング処理を行うパッチング手段５５は、バッファメモリ１１に蓄積されたＤＣのポインタがパッチングスレッショルド以下になった場合に、上流ノード１からＤＣを取得する代わりに、緊急にパッチングサーバ３からＤＣを取得する。
【００６３】
（ノードの処理）
次に、ノード１の処理について説明する。図８は、ノード１の処理を示すフローチャートである。配信サービスを行うＰ２Ｐネットワークにノード１が新たに参加すると、当該ノード１は、ネットワーク参加処理を行う（ステップＳ８０１）。図１２は、ネットワーク参加処理を説明する図であり、ノード１ＣがＰ２Ｐネットワークに新たに参加した場合を示している。ノード１ＣがＰ２Ｐネットワークに新たに参加すると、ノード１Ｃにおける送受信手段１０のネットワーク参加処理手段５１は、ディレクトリサーバ４へアクセスし、当該ノード１Ｃに関する情報（ＵＲＬ、ＩＰアドレス等）をディレクトリサーバ４へ送信する（ステップＳ１２０１）。ディレクトリサーバ４は、ノード１Ｃからノード１Ｃに関する情報を受信すると、当該情報を記憶装置に登録して管理する。そして、ディレクトリサーバ４は、通信システム５を構成する配信サーバ２、パッチングサーバ３及びＰ２Ｐネットワークに参加している全てまたは一部のノード１に関する情報、並びに上流ノード１に関する情報及び下流ノード１に関する情報（ＵＲＬ、ＩＰアドレス等）を、ノード１Ｃへ送信する（ステップＳ１２０２）。これにより、ノード１Ｃは、配信サーバ２、パッチングサーバ３、上流ノード１及び下流ノード１へアクセスすることができ、通信を行うことができる。すなわち、図１２に示すように、ノード１Ｃは、上流ノード１Ａ，１Ｂへアクセスしてバッファマップ及び映像ストリームのデータを取得することができ、パッチングサーバ３へアクセスして映像ストリームのデータを取得することができる。
【００６４】
図８に戻って、ノード１は、上流ノード１からバッファマップを取得する（ステップＳ８０２）。具体的には、ノード１における送受信手段１０のバッファマップ取得手段５２は、ディレクトリサーバ４から受信した上流ノード１に関する情報に基づいて、バッファマップ要求を上流ノード１へ送信し、上流ノード１からバッファマップを受信し、バッファマップ保存手段１３及びバッファマップ比較手段１５に出力する。バッファマップ保存手段１３は、バッファマップをバッファメモリ１１に保存し、バッファマップ比較手段１５は、上流ノード１のバッファマップを比較することで、再生中の上流ノード１から取得したバッファマップを選択する。
【００６５】
ノード１は、ステップＳ８０２にて取得したバッファマップのうち、バッファマップ比較手段１５により選択されたバッファマップの示す最も古いデータの位置（上流ノード１の視聴ポイント）を特定し、特定したデータの位置よりも１つ新しいデータの位置を視聴ポイントに設定する（ステップＳ８０３）。この視聴ポイント設定処理の詳細については後述する。
【００６６】
ノード１は、上流ノード１から映像ストリームのデータを取得し、パッチング処理時に、パッチングサーバ３から映像ストリームのデータを取得し、バッファメモリ１１に蓄積する（ステップＳ８０４）。この映像データ取得処理の詳細については後述する。また、ノード１は、バッファメモリ１１から映像ストリームのデータを読み出し、下流ノード１へ送信する（ステップＳ８０５）。この映像データ送信処理の詳細については後述する。
【００６７】
ノード１は、Ｐ２Ｐネットワークから離脱したか否かを判定し（ステップＳ８０６）、Ｐ２Ｐネットワークから離脱していない場合（ステップＳ８０６：Ｎ）、映像データ取得処理（ステップＳ８０４）及び映像データ送信処理（ステップＳ８０５）を行い、Ｐ２Ｐネットワークから離脱した場合（ステップＳ８０６：Ｙ）、所定のネットワーク離脱処理を行う（ステップＳ８０７）。ノード１は、Ｐ２Ｐネットワークに参加している間、前述の映像データ取得処理（ステップＳ８０４）及び映像データ送信処理（ステップＳ８０５）を繰り返す。
【００６８】
尚、図８に示したノード１の処理では、ステップＳ８０３において、ノード１がＰ２Ｐネットワークに新たに参加したときに視聴ポイント設定処理を行うようにしたが、視聴ポイント設定処理は、このタイミング以外に、例えば再生が停止したときに行われる。
【００６９】
（視聴ポイント設定処理）
次に、図８に示した視聴ポイント設定処理（ステップＳ８０３）について詳細に説明する。図９は、その詳細な処理を示すフローチャートである。ノード１のバッファマップ比較手段１５は、送受信手段１０のバッファマップ取得手段５２により取得された上流ノード１のバッファマップを入力し、入力した複数のバッファマップを比較することで、バッファマップに含まれる再生状況が再生中を示しているバッファマップを選択する（ステップＳ９０１）。これにより、上流ノード１から取得したバッファマップのうち、再生中の上流ノード１から取得したバッファマップが選択される。バッファマップ比較手段１５は、選択したバッファマップの数が１つである場合、このバッファマップを比較結果として視聴ポイント設定手段５３に出力する。
【００７０】
バッファマップ比較手段１５は、ステップＳ９０１にて選択したバッファマップの数が複数である場合、複数のバッファマップを比較することで、バッファマップが示す最も古いデータの位置（上流ノード１の視聴ポイント）のうち最新の視聴ポイントを有する１つのバッファマップを特定し（ステップＳ９０２）、特定した１つのバッファマップを比較結果として視聴ポイント設定手段５３に出力する。
【００７１】
送受信手段１０の視聴ポイント設定手段５３は、バッファマップ比較手段１５から比較結果のバッファマップを入力し、入力したバッファマップが示す最も古いデータの位置（上流ノード１の視聴ポイント）から１つ新しいデータの位置を、視聴ポイントに設定する（ステップＳ９０３）。
【００７２】
尚、図９に示した視聴ポイント設定処理では、ステップＳ９０１において、バッファマップ比較手段１５は、上流ノード１から取得された複数のバッファマップを比較することで、バッファマップに含まれる再生状況が再生中を示しているバッファマップを選択するようにした。これに対し、バッファマップ比較手段１５は、バッファマップに含まれる視聴ポイント以降のデータに関する情報に基づいてデータ量を算出し、算出したデータ量が所定量以上の場合に、再生状況が再生中であると判定し、算出したデータ量が所定量よりも少ない場合に、再生状況が非再生中であると判定し、再生中であると判定したバッファマップを選択するようにしてもよい。この場合、バッファマップには、再生状況（再生中または非再生中）の情報が不要となる。
【００７３】
また、図９に示した視聴ポイント設定処理では、ステップＳ９０２において、バッファマップ比較手段１５は、比較結果の１つのバッファマップを特定する際に、ステップＳ９０１にて選択した複数のバッファマップが示す最も古いデータの位置（上流ノード１の視聴ポイント）のうち最新の視聴ポイントを有する１つのバッファマップを特定するようにした。これに対し、バッファマップ比較手段１５は、複数のバッファマップが示す再生スレッショルドのうち最新の再生スレッショルドを有する１つのバッファマップを特定するようにしてもよい。また、バッファマップ比較手段１５は、複数のバッファマップのうち、任意に１つのバッファマップを特定するようにしてもよい。
【００７４】
また、図９に示した視聴ポイント設定処理では、ステップＳ９０３において、送受信手段１０の視聴ポイント設定手段５３は、再生中の上流ノード１から取得したバッファマップが示すデータのうち最も古いデータの位置（上流ノード１の視聴ポイント）から１つ新しいデータの位置を、視聴ポイントに設定するようにした。これに対し、視聴ポイント設定手段５３は、最も古いデータの位置を視聴ポイントに設定するようにしてもよいし、最も古いデータの位置から２つ以上新しいデータの位置を視聴ポイントに設定するようにしてもよい。
【００７５】
（映像データ取得処理）
次に、図８に示した映像データ取得処理（ステップＳ８０４）について詳細に説明する。図１０は、その詳細な処理を示すフローチャートである。ノード１における送受信手段１０のデータ取得手段５４は、図８に示したステップＳ８０２または後述するステップＳ１００６にて取得した複数のバッファマップ（上流ノード１のバッファマップ）に基づいて、上流ノード１からデータを取得し、バッファメモリ１１に蓄積する（ステップＳ１００１）。具体的には、データ取得手段５４は、バッファマップに基づいて、データを取得するためのデータ要求を上流ノード１へ送信し、データ要求に対応するデータを、データ要求を送信した上流ノード１から受信し、バッファメモリ１１に蓄積する。
【００７６】
データ取得手段５４は、バッファマップが示すデータのうち、視聴ポイント設定手段５３により設定された視聴ポイント以降の全てのデータを取得済みであるか否かを判定し（ステップＳ１００２）、全てのデータを取得済みであると判定した場合（ステップＳ１００２：Ｙ）、ステップＳ１００３へ移行し、全てのデータを取得済みでないと判定した場合（ステップＳ１００２：Ｎ）、ステップＳ１００５へ移行する。
【００７７】
データ取得手段５４は、全てのデータを取得済みであると判定してステップＳ１００２から移行すると、再生中の上流ノード１から取得したバッファマップのうち、最新のデータに関する情報を有する１つのバッファマップを特定する（ステップＳ１００３）。そして、データ取得手段５４は、特定したバッファマップが示す最新のデータの次に新しいデータを取得するためのデータ要求を、当該バッファマップの取得先である上流ノード１へ送信し、データ要求に対応するデータを、データ要求を送信した上流ノード１から受信し、バッファメモリ１１に蓄積する（ステップＳ１００４）。これにより、データ取得手段５４は、バッファマップの示す最新のデータの次に新しいデータが、そのバッファマップの取得先である上流ノード１に蓄積されていることを予測し、予測対象のデータをその上流ノード１から取得することができる。最新のデータを蓄積している取得先の上流ノード１は再生中であり、予測対象のデータ（最新のデータの次に新しいデータ）を他の上流ノード１よりも早く蓄積するものと想定できるからである。
【００７８】
送受信手段１０の再生手段１２は、ステップＳ１００２またはステップＳ１００４から移行すると、図６に示したデータ再生処理を行う（ステップＳ１００５）。すなわち、再生手段１２は、バッファメモリ１１から視聴ポイントのデータを読み出して映像データを再生し、バッファメモリ１１に蓄積されたデータが視聴ポイント以下になった場合に再生を停止し、データが再生スレッショルドの位置にまで蓄積されるのを待って、再生を開始する。
【００７９】
送受信手段１０のバッファマップ取得手段５２は、バッファマップ保存手段１３からの取得要求に基づいて、所定の時間間隔にて、バッファマップを取得するためのバッファマップ要求を上流ノード１へ送信し、バッファマップを上流ノード１から受信してバッファマップ保存手段１３に出力する（ステップＳ１００６）。バッファマップ保存手段１３は、バッファマップをバッファメモリ１１に保存する。これにより、上流ノード１のバッファマップは、所定時間間隔で更新される。
【００８０】
送受信手段１０のパッチング手段５５は、図７に示したパッチング処理を行う（ステップＳ１００７）。すなわち、パッチング手段５５は、バッファメモリ１１に蓄積されたデータのポインタがパッチングスレッショルド以下になった場合に、上流ノード１からデータを取得する代わりに、緊急にパッチングサーバ３からデータを取得する。
【００８１】
尚、図１０に示した映像データ取得処理では、ステップＳ１００４において、送受信手段１０のデータ取得手段５４は、特定したバッファマップが示す最新のデータの次に新しいデータを取得するようにした。これに対し、データ取得手段５４は、最新のデータの次に新しいデータに加え、さらに新しいデータも取得するようにしてもよい。つまり、データ取得手段５４は、特定したバッファマップが示す最新のデータの次に新しい２以上のデータを取得するためのデータ要求を、当該バッファマップの取得先である上流ノード１へ送信し、データ要求に対応するデータを、データ要求を送信した上流ノード１から受信し、バッファメモリ１１に蓄積するようにしてもよい。これにより、データ取得手段５４は、バッファマップの示す最新のデータの次に新しい２以上のデータが、そのバッファマップの取得先である上流ノード１に蓄積されていることを予測し、予測対象の２以上のデータをその上流ノード１から取得することができる。
【００８２】
また、図１０に示した映像データ取得処理では、ステップＳ１００４において、送受信手段１０のデータ取得手段５４は、特定したバッファマップの示す最新のデータの次に新しいデータ（予測対象のデータ）が前記バッファマップの取得先である上流ノード１に蓄積されていることを予測し、予測対象のデータを取得するためのデータ要求を当該上流ノード１へ送信し、当該上流ノード１から、データ要求に対応するデータを受信するようにした。しかし、当該上流ノード１に予測対象のデータが蓄積されていないことがあり得る。この場合、データ取得手段５４は、当該上流ノード１から、データ要求に対応したデータ不在を示す情報を受信し、所定時間待ってから再度のデータ要求を、当該上流ノード１へ送信する。
【００８３】
（映像データ送信処理）
次に、図８に示した映像データ送信処理（ステップＳ８０５）について詳細に説明する。図１１は、その詳細な処理を示すフローチャートである。ノード１のバッファマップ作成手段１４は、所定の時間間隔にて、バッファメモリ１１に蓄積されたデータに基づいて、視聴ポイント以降のデータに関する情報に加え、再生状況、視聴ポイント及び再生スレッショルドの情報を示すバッファマップを作成する（ステップＳ１１０１）。
【００８４】
送受信手段１０のバッファマップ送信手段５６は、下流ノード１からバッファマップ要求を受信したか否かを判定し（ステップＳ１１０２）、バッファマップ要求を受信したと判定した場合（ステップＳ１１０２：Ｙ）、バッファマップ作成手段１４により作成されたバッファマップを、バッファマップ要求を送信してきた下流ノード１へ送信し（ステップＳ１１０３）、ステップＳ１１０４へ移行する。一方、バッファマップ送信手段５６は、ステップＳ１１０２において、バッファマップ要求を受信していないと判定した場合（ステップＳ１１０２：Ｎ）、ステップＳ１１０４へ移行する。
【００８５】
送受信手段１０のデータ送信手段５７は、ステップＳ１１０２またはステップＳ１１０３から移行して、下流ノード１からデータ要求を受信したか否かを判定し（ステップＳ１１０４）、データ要求を受信したと判定した場合（ステップＳ１１０４：Ｙ）、バッファメモリ１１からデータ要求に対応するデータを読み出し、読み出したデータを、データ要求を送信してきた下流ノード１へ送信し（ステップＳ１１０５）、処理を終了する。この場合、データ送信手段５７は、バッファメモリ１１にデータ要求に対応するデータが蓄積されておらず、データを読み出すことができないと判断すると、データ要求に対応したデータ不在を示す情報を、データ要求を送信してきた下流ノード１へ送信する。一方、データ送信手段５７は、ステップＳ１１０４において、データ要求を受信していないと判定した場合（ステップＳ１１０４：Ｎ）、処理を終了する。
【００８６】
尚、図１１に示した映像データ送信処理では、ステップＳ１１０１において、バッファマップ作成手段１４は、所定の時間間隔にて、バッファメモリ１１に蓄積されたデータに基づいて、視聴ポイント以降のデータに関する情報に加え、再生状況、視聴ポイント及び再生スレッショルドの情報を示すバッファマップを作成するようにした。これに対し、バッファマップ作成手段１４は、視聴ポイント以降のデータに関する情報及び再生状況の情報からなるバッファマップを作成するようにしてもよいし、視聴ポイント以降のデータに関する情報のみからなるバッファマップを作成するようにしてもよい。この場合、バッファマップを受信するノード１は、視聴ポイント以降のデータに関する情報から視聴ポイントを導出することができ、また、視聴ポイント以降のデータに関する情報からデータ量を算出し、算出したデータ量から再生中または非再生中を示す再生状況を導出することができる。
【００８７】
以上のように、本実施例によれば、バッファマップに、視聴ポイント以降のデータに関する情報に加え、再生状況、視聴ポイント及び再生スレッショルドの情報も加えるようにし、ノード１における送受信手段１０の視聴ポイント設定手段５３は、上流ノード１から取得したバッファマップのうち、再生中の上流ノード１から取得したバッファマップを選択し、選択したバッファマップの示すデータのうち最も古いデータ（上流ノード１の視聴ポイント）に基づいて視聴ポイントを設定し、データ取得手段５４は、設定した視聴ポイント以降のデータを上流ノード１から取得するようにした。これにより、当該ノード１の視聴ポイントは、再生中の上流ノード１の視聴ポイントに近くなり、大きく遅延することがない。したがって、再生中の上流ノード１に対する当該ノード１の視聴ポイントの遅延を小さくすることができ、低遅延で安定した配信サービスを提供することが可能となる。
【００８８】
また、視聴ポイント設定手段５３は、再生中の上流ノード１から取得したバッファマップの示すデータのうち最も古いデータ（上流ノード１の視聴ポイント）よりも１つ新しいデータの位置を視聴ポイントに設定し、データ取得手段５４は、設定した視聴ポイント以降のデータを上流ノード１から取得するようにした。これにより、当該ノード１の視聴ポイントは、再生中の上流ノード１Ａの視聴ポイントに一層近くなる。したがって、上流ノード１に対する当該ノード１の視聴ポイントの遅延をさらに小さくすることができ、一層低遅延で安定した配信サービスを提供することが可能となる。
【００８９】
また、視聴ポイント設定手段５３は、バッファマップの示す最新のデータの次に新しいデータ（バッファマップには示されていないデータ）が上流ノード１に蓄積されることを予測し、上流ノード１から予測対象のデータも取得するようにした。これにより、当該ノード１は予測対象のデータまで再生することができるから、再生中の上流ノード１に対する当該ノード１の視聴ポイントの遅延をさらに小さくすることができ、一層低遅延で安定した配信サービスを提供することが可能となる。
【００９０】
また、本実施例によれば、ノード１がＰ２Ｐネットワークに参加またはＰ２Ｐネットワークから離脱した場合であっても、全てのノード１は前述の処理を行うから、低遅延で安定した配信サービスを実現することができる。
【００９１】
また、本実施例によれば、このＰ２Ｐネットワークによる配信サービスと、ソーシャルネットワーク等の他のサービスとを連携する場合にも、全てのノード１は、低遅延で安定した配信サービスを実現することができるから、他のサービスとの間で時間的な整合を図ることができる。
【００９２】
尚、本発明の実施例によるノード１、配信サーバ２、パッチングサーバ３及びディレクトリサーバ４のハードウェア構成としては、通常のコンピュータを使用することができる。ノード１、配信サーバ２、パッチングサーバ３及びディレクトリサーバ４は、ＣＰＵ、ＲＡＭ等の揮発性の記憶媒体、ＲＯＭ等の不揮発性の記憶媒体、及びインターフェース等を備えたコンピュータによって構成される。ノード１に備えた送受信手段１０、バッファメモリ１１、再生手段１２、バッファマップ保存手段１３、バッファマップ作成手段１４及びバッファマップ比較手段１５の各機能は、これらの機能を記述したプログラムをＣＰＵに実行させることによりそれぞれ実現される。これらのプログラムは、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスク等）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤ等）、半導体メモリ等の記憶媒体に格納して頒布することもでき、ネットワークを介して送受信することもできる。
【符号の説明】
【００９３】
１，１００  端末装置（ノード）
２  配信サーバ
３  パッチングサーバ
４  ディレクトリサーバ
５  通信システム
１０  送受信手段
１１  バッファメモリ
１２  再生手段
１３  バッファマップ保存手段
１４  バッファマップ作成手段
１５  バッファマップ比較手段（バッファマップ選択手段）
５１  ネットワーク参加処理手段
５２  バッファマップ取得手段
５３  視聴ポイント設定手段
５４  データ取得手段
５５  パッチング手段
５６  バッファマップ送信手段
５７  データ送信手段
【図１】
0005868735.tif 000002
【図２】
0005868735.tif 000003
【図３】
0005868735.tif 000004
【図４】
0005868735.tif 000005
【図５】
0005868735.tif 000006
【図６】
0005868735.tif 000007
【図７】
0005868735.tif 000008
【図８】
0005868735.tif 000009
【図９】
0005868735.tif 000010
【図１０】
0005868735.tif 000011
【図１１】
0005868735.tif 000012
【図１２】
0005868735.tif 000013
【図１３】
0005868735.tif 000014
【図１４】
0005868735.tif 000015