(57)【特許請求の範囲】
【請求項１】
複数のユーザ端末が相互接続して構築されるネットワークにおいて、各ユーザ端末間で、上流ノードとしてのユーザ端末がストリームデータを送信し、下流ノードとしてのユーザ端末がストリームデータを受信するストリームデータ分散配信機能を実現する方法であって、
前記各ユーザ端末は、下流ノードとして接続先の上流ノードを認識する情報を含み、上流ノードと下流ノードとの接続関係を認識するためのトポロジ情報を記憶する手段、当該トポロジ情報を各ユーザ端末間で交換する手段、及び前記ストリームデータの送受信を行なう手段を有し、
下流ノードとして動作するユーザ端末は、
上流ノードに相当するユーザ端末に接続を要求するステップと、
前記トポロジ情報を受信するステップと、
受信した前記トポロジ情報から、接続を要求する上流ノードに相当するユーザ端末を選択するステップと
を有する手順を実行し、
上流ノードとして動作するユーザ端末は、
記憶しているトポロジ情報に対して、下流ノードに相当するユーザ端末との接続に従って更新し、かつ上位の上流ノードに相当するユーザ端末から送信されたトポロジ情報を併合するステップと、
下流ノードとして接続された全てのユーザ端末に対して、前記トポロジ情報を送信するステップと
を有する手順を実行することを特徴とするストリームデータ分散配信方法。
【請求項２】
前記各ユーザ端末は、
上流ノードまたは下流ノードに相当するユーザ端末との接続切断に応じて、前記トポロジ情報を更新するステップを有することを特徴とする請求項１に記載のストリームデータ分散配信方法。
【請求項３】
下流ノードとして動作するユーザ端末は、
既存の上流ノードに相当するユーザ端末との接続切断に応じて、前記トポロジ情報から新たな上流ノードに相当するユーザ端末を選択するステップと、
前記選択した上流ノードに相当するユーザ端末に対して、接続を要求するステップと
を有することを特徴とする請求項１または請求項２のいずれか１項に記載のストリームデータ分散配信方法。
【請求項４】
上流ノードとして動作するユーザ端末は、
下流ノードに相当するユーザ端末からの接続要求に応じて接続認証処理を実行するステップを有することを特徴とする請求項１に記載のストリームデータ分散配信方法。
【請求項５】
下流ノードとして動作するユーザ端末は、
前記上流ノードに相当するユーザ端末から受信した前記ストリームデータを再生するステップを有することを特徴とする請求項１から請求項４のいずれか１項に記載のストリームデータ分散配信方法。
【請求項６】
複数のユーザ端末が相互接続して構築されるネットワークにおいて、各ユーザ端末間で、上流ノードとしてのユーザ端末がストリームデータを送信し、下流ノードとしてのユーザ端末がストリームデータを受信するストリームデータ分散配信機能を実現するためのプログラムであって、
前記各ユーザ端末は、前記プログラムを実行するコンピュータを有し、
下流ノードとして接続先の上流ノードを認識する情報を含み、上流ノードと下流ノードとの接続関係を認識するためのトポロジ情報を記憶する機能と、
前記トポロジ情報を各ユーザ端末間で交換する機能と、
前記ストリームデータの送受信を行なう機能とを前記コンピュータに実現させて、
下流ノードとして動作する場合に、
上流ノードに相当するユーザ端末に接続を要求する機能と、
前記トポロジ情報を受信する機能と、
受信した前記トポロジ情報から、接続を要求する上流ノードに相当するユーザ端末を選択する機能とを前記コンピュータに実現させて、
上流ノードとして動作する場合に、
記憶しているトポロジ情報に対して、下流ノードに相当するユーザ端末との接続に従って更新し、かつ上位の上流ノードに相当するユーザ端末から送信されたトポロジ情報を併合する機能と、
下流ノードとして接続された全てのユーザ端末に対して、前記トポロジ情報を送信する機能とを前記コンピュータに実現させるためのプログラム。
【請求項７】
上流ノードまたは下流ノードに相当するユーザ端末との接続切断に応じて、前記トポロジ情報を更新する機能を前記コンピュータに実現させることを特徴とする請求項６に記載のプログラム。
【請求項８】
下流ノードとして動作する場合に、
既存の上流ノードに相当するユーザ端末との接続切断に応じて、前記トポロジ情報から新たな上流ノードに相当するユーザ端末を選択する機能と、
前記選択した上流ノードに相当するユーザ端末に対して、接続を要求する機能と
を前記コンピュータに実現させることを特徴とする請求項６または請求項７のいずれか１項に記載のプログラム。
【請求項９】
上流ノードとして動作する場合に、
下流ノードに相当するユーザ端末からの接続要求に応じて接続認証処理を実行する機能を前記コンピュータに実現させることを特徴とする請求項６に記載のプログラム。
【請求項１０】
下流ノードとして動作する場合に、
前記上流ノードに相当するユーザ端末から受信した前記ストリームデータを再生する機能を前記コンピュータに実現させることを特徴とする請求項６から請求項９のいずれか１項に記載のプログラム。
【請求項１１】
複数のユーザ端末が相互接続して構築されるネットワークにおいて、各ユーザ端末間で、上流ノードとしてのユーザ端末がストリームデータを送信し、下流ノードとしてのユーザ端末がストリームデータを受信するストリームデータ分散配信機能を実現するシステムであって、
前記各ユーザ端末は、
下流ノードとして接続先の上流ノードを認識する情報を含み、上流ノードと下流ノードとの接続関係を認識するためのトポロジ情報を記憶する手段と、
前記トポロジ情報を各ユーザ端末間で交換する手段と、
前記ストリームデータの送受信を行なう手段とを有し、
下流ノードとして動作するユーザ端末は、
上流ノードに相当するユーザ端末に接続を要求する手段と、
前記トポロジ情報を受信する手段と、
受信した前記トポロジ情報から、接続を要求する上流ノードに相当するユーザ端末を選択する手段とを有し、
上流ノードとして動作するユーザ端末は、
記憶しているトポロジ情報に対して、下流ノードに相当するユーザ端末との接続に従って更新し、かつ上位の上流ノードに相当するユーザ端末から送信されたトポロジ情報を併合する手段と、
下流ノードとして接続された全てのユーザ端末に対して、前記トポロジ情報を送信する手段と
を有することを特徴とするストリームデータ分散配信システム。
【請求項１２】
前記各ユーザ端末は、
上流ノードまたは下流ノードに相当するユーザ端末との接続切断に応じて、前記トポロジ情報を更新する手段を有することを特徴とする請求項１１に記載のストリームデータ分散配信システム。
【請求項１３】
下流ノードとして動作するユーザ端末は、
既存の上流ノードに相当するユーザ端末との接続切断に応じて、前記トポロジ情報から新たな上流ノードに相当するユーザ端末を選択する手段と、
前記選択した上流ノードに相当するユーザ端末に対して、接続を要求する手段と
を有することを特徴とする請求項１１または請求項１２のいずれか１項に記載のストリームデータ分散配信システム。
【請求項１４】
上流ノードとして動作するユーザ端末は、
下流ノードに相当するユーザ端末からの接続要求に応じて接続認証処理を実行する手段を有することを特徴とする請求項１１に記載のストリームデータ分散配信システム。
【請求項１５】
下流ノードとして動作するユーザ端末は、
前記上流ノードに相当するユーザ端末から受信した前記ストリームデータを再生する手段を有することを特徴とする請求項１１から請求項１４のいずれか１項に記載のストリームデータ分散配信システム。
【請求項１６】
複数のユーザ端末が相互接続して構築されるネットワークにおいて、各ユーザ端末間で、上流ノードとしてのユーザ端末がストリームデータを送信し、下流ノードとしてのユーザ端末がストリームデータを受信する各ユーザ端末のそれぞれを構成する電子機器であって、
前記各ユーザ端末は、
下流ノードとして接続先の上流ノードを認識する情報を含み、上流ノードと下流ノードとの接続関係を認識するためのトポロジ情報を記憶する手段と、
前記トポロジ情報を各ユーザ端末間で交換する手段と、
前記ストリームデータの送受信を行なう手段とを有し、
下流ノードとして動作するユーザ端末は、
上流ノードに相当するユーザ端末に接続を要求する手段と、
前記トポロジ情報を受信する手段と、
受信した前記トポロジ情報から、接続を要求する上流ノードに相当するユーザ端末を選択する手段とを有し、
上流ノードとして動作するユーザ端末は、
記憶しているトポロジ情報に対して、下流ノードに相当するユーザ端末との接続に従って更新し、かつ上位の上流ノードに相当するユーザ端末から送信されたトポロジ情報を併合する手段と、
下流ノードとして接続された全てのユーザ端末に対して、前記トポロジ情報を送信する手段とを有することを特徴とする電子機器。
【請求項１７】
前記各ユーザ端末は、
上流ノードまたは下流ノードに相当するユーザ端末との接続切断に応じて、前記トポロジ情報を更新する手段を有することを特徴とする請求項１６に記載の電子機器。
【請求項１８】
下流ノードとして動作するユーザ端末は、
既存の上流ノードに相当するユーザ端末との接続切断に応じて、前記トポロジ情報から新たな上流ノードに相当するユーザ端末を選択する手段と、
前記選択した上流ノードに相当するユーザ端末に対して、接続を要求する手段と
を有することを特徴とする請求項１６または請求項１７のいずれか１項に記載の電子機器。
【請求項１９】
上流ノードとして動作するユーザ端末は、
下流ノードに相当するユーザ端末からの接続要求に応じて接続認証処理を実行する手段を有することを特徴とする請求項１６に記載の電子機器。
【請求項２０】
下流ノードとして動作するユーザ端末は、
前記上流ノードに相当するユーザ端末から受信した前記ストリームデータを再生する手段を有することを特徴とする請求項１６から請求項１９のいずれか１項に記載の電子機器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的にはネットワーク環境下でストリームデータを分散配信する方法に関し、特にインターネット上においてユーザ端末間でストリームデータの分散配信機能を実現する技術に関する。
【０００２】
【従来の技術】
近年、インターネットを代表とする情報通信ネットワーク環境において、ブロードバンド化の推進により、主として動画（映像）や音声のコンテンツ情報（以下ストリームデータと呼ぶ場合がある）の伝送を容易に行なうことが可能になりつつある。ブロードバンド化のネットワーク環境としては、例えばＡＤＳＬ（asymmetric digital subscriber line）伝送方式やＣＡＴＶ（cable television）ネットワークを利用した有線通信方式以外に、携帯電話などの無線通信方式（移動体通信方式）によるネットワーク環境も含まれる。
【０００３】
ところで、インターネットに接続されるユーザ端末としては、パーソナルコンピュータ、各種のディジタル情報機器（例えばディジタル・テレビ受信機など）、携帯電話（ＰＨＳも含む）、あるいは無線通信機能を有する携帯型情報端末（ＰＤＡ：personal digital assistantとも呼ばれている）等が含まれる。
【０００４】
ブロードバンド化のネットワーク環境下で、これらのユーザ端末を使用することにより、ストリームデータを受信して、ユーザの違和感を伴なうことなく、動画や音声のコンテンツ情報を再生することが可能となる。従来では、インターネットによる情報サービスや、個人間の情報交換では、文字情報や静止画像が主体であり、動画や音声などのストリームデータの通信は限定されたものであった。従って、今後、ブロードバンド化のネットワーク環境の普及に伴なって、ストリームデータ配信サービス事業などのビジネス分野だけでなく、ユーザ間で個人的情報を交換するプライベートの分野でも、ストリームデータ配信に対する需要が増大することが予想される。
【０００５】
【発明が解決しようとする課題】
ネットワーク環境下でのブロードバンド化の推進により、インターネットの基幹系や、各家庭のユーザ端末と接続する支線系について、帯域の増強や通信コストの低減化が実現されつつある。
【０００６】
しかし一方で、ストリームデータ配信に対する需要の増大化に伴なって、ストリームデータを送信するためのシステムに対して、負荷容量（配信能力）の増大化が要求されている。このことは、特にサーバを中心とする多大な設備投資が要求されて、システム構築に要するコストの増大化を招くことになる。
【０００７】
一般的に、ストリームデータの配信システムは、サービス事業者（インターネットサービスプロバイダ：ＩＳＰなど）が管理するサーバにより実現されている。従って、サービス事業者側において、コスト面からサーバの負荷容量を増強できない場合、ストリームデータ配信に対する需要の増大化に対応できず、ブロードバンド化により増強されたインターネットの帯域を十分に活用できない状況になる。
【０００８】
このような問題点を解消するために、ストリームデータを分散配信（配送）する各種の技術が開発されている。これらの先行技術により、ストリームデータの送信（配信）を行なうサーバの負荷を軽減することが可能となる。しかしながら、いずれの先行技術も基本的には、分散配信システムを事業者が管理するサーバにより中央制御する方式である。このため、ストリームデータの送信に関するサーバの負荷は軽減できても、一方で、分散配信システムを構成するためのトポロジ（ノード間の接続関係）の制御などに関するサーバの負荷が増大するという問題がある。
【０００９】
さらに、分散配信システムを中央制御する方式は、サービス事業者が管理するサーバによりストリームデータ配信を行なう事業者向けのアプローチである。換言すれば、ユーザ間で個人的情報を交換するプライベートの分野において、サービス事業者が管理するサーバを要することなく、いわば自律的又は個人的なストリームデータ配信を実現する分散配信システムに関する技術は開発されていない。
【００１０】
そこで、本発明の目的は、インターネットなどのネットワーク環境において、特にユーザ端末間での自律的又は個人的なストリームデータ配信を実現できるストリームデータ分散配信技術を提供することにある。
【００１１】
【課題を解決するための手段】
本発明の観点は、インターネットなどのネットワーク環境において、各ユーザ端末（ノード）間でストリームデータの送受信を行なうストリームデータ分散配信システムを動的に構築するための方法に関する。本方法の特徴は、各ユーザ端末のネットワーク接続関係を認識するためのトポロジ情報を、各ノード（ユーザ端末）が分散管理する構成にある。換言すれば、各ノードが自律的に、トポロジ情報を記憶し、更新し、提供するなどの管理を行なう機能を備えている。
【００１２】
本発明の観点によるストリームデータ分散配信方法は、複数のユーザ端末が相互接続して構築されるネットワークにおいて、各ユーザ端末間で、上流ノードとしてのユーザ端末がストリームデータを送信し、下流ノードとしてのユーザ端末がストリームデータを受信するストリームデータ分散配信機能を実現する方法であって、前記各ユーザ端末は、下流ノードとして接続先の上流ノードを認識する情報を含み、上流ノードと下流ノードとの接続関係を認識するためのトポロジ情報を記憶する手段、当該トポロジ情報を各ユーザ端末間で交換する手段、及び前記ストリームデータの送受信を行なう手段を有し、下流ノードとして動作するユーザ端末は、上流ノードに相当するユーザ端末に接続を要求するステップと、前記トポロジ情報を受信するステップと、受信した前記トポロジ情報から、接続を要求する上流ノードに相当するユーザ端末を選択するステップとを有する手順を実行し、上流ノードとして動作するユーザ端末は、記憶しているトポロジ情報に対して、下流ノードに相当するユーザ端末との接続に従って更新し、かつ上位の上流ノードに相当するユーザ端末から送信されたトポロジ情報を併合するステップと、下流ノードとして接続された全てのユーザ端末に対して、前記トポロジ情報を送信するステップとを有する手順を実行する構成である。
【００１３】
本発明の観点によるストリームデータ分散配信方法であれば、サービス事業者が管理するストリームデータ配信用サーバや、分散配送系制御サーバなどを要することなく、例えばインターネットに接続されたユーザ端末間で、ストリームデータの送信、受信または中継を行なうことができる。
【００１４】
各ノードは、トポロジ情報により認識した上流ノードに接続し、当該上流ノードから送信されるストリームデータを受信できる。また、トポロジ情報により認識した下流ノードに対してストリームデータを送信できる。この場合、上流ノードとして機能する自ノードは、複数の下流ノードに接続し、ストリームデータを同時並行的に送信することができる。また、上流ノードからストリームデータを受信した下流ノードは、他の下流ノードからの接続要求に応じて、上流ノードとして機能し、当該下流ノードに対して受信したストリームデータを送信（要するに中継）することができる。従って、サービス事業者が運営する高性能のストリームデータ配信用サーバを要することなく、インターネットに接続された各ユーザ端末間で、ストリームデータの分散配信を実現することができる。但し、一般的には、各ユーザ端末は、ＩＳＰや通信事業者などを介して、インターネットへの接続を行なうことになる。
【００１５】
本発明のストリームデータ分散配信方法を利用すれば、一般ユーザが個人的な撮影映像を、インターネットに接続したパーソナルコンピュータなどを利用して、関係者のみに配信するようなパーソナル放送とも言えるサービスが可能となる。また、ユーザまたは事業者は、多数の視聴者に向けてライブやコンサートなどの中継放送を行なういわゆるインターネット放送を実現できる。この場合、インターネット放送事業者は、商業用のインターネット・ストリームデータ配信サービスにおける配信サーバの負荷を軽減させることができる。即ち、インターネット放送事業者が管理するサーバから、少数の各ユーザ端末にストリームデータを配信し、当該各ユーザ端末から他の各ユーザ端末に対して当該ストリームデータを配信することができる。これにより、インターネット放送事業者が管理するサーバの負荷を、直接的にストリームデータを配信する先のユーザ端末数に応じて軽減することができる。
【００１６】
【発明の実施の形態】
以下図面を参照して、本発明の実施の形態を説明する。
【００１７】
（システムの基本的構成）
図１は、本実施形態に関するストリームデータ分散配信システムの概念を示す図である。
【００１８】
本システムは、特にブロードバンドのインターネット等のような常時接続の高速ネットワーク環境を想定し、当該ネットワークに接続された複数のノード１０によりストリームデータを分散配信する構成である。ここで、ストリームデータとは、動画（映像）や音声等の連続的ディジタルデータを意味する。また、ノード１０とは、一般的には、ネットワークに接続されたユーザ端末であるが、サーバやルータなどのネットワーク機器であってもよい。ユーザ端末としては、具体的には、パーソナルコンピュータ、無線通信機能を有する携帯型情報端末（ＰＤＡや、ノート型パーソナルコンピュータなどを意味する）、あるいは携帯電話（ＰＨＳも含む）等のディジタル情報機器（デバイス）を意味する。また、ユーザ端末としては、前記のデバイス単体だけでなく、ＬＡＮもしくは無線ＬＡＮにより、複数のデバイスを接続して構成されるシステムを意味する場合もある。
【００１９】
本システムでは、あるノード１０（Ａ）から送信されたストリームデータを受信したノード１０（Ｂ）は、ストリームデータを復号して再生（視聴）すると共に、他のノード１０に中継する。この場合、ノード１０（Ｂ）は、データ処理能力及びネットワーク接続帯域の許容範囲内で、複数のノード１０に対してストリームデータを中継する。
【００２０】
要するに、本システムは、上流ノードから下流ノードへストリームデータの中継を実行することにより、高性能の配信用サーバを要することなく、多数のユーザ端末に対してストリームデータ配信を行なうストリームデータ分散配信機能を実現する。ここで、上流ノードとは、自ノードに対して上流であり、ストリームデータの送信元ノードまたは中継ノードである。また、下流ノードとは、自ノードに対してストリームデータの送信先ノードである。下流ノードは、ストリームデータを受信する受信ノード、または更に下流ノードに対して送信する中継ノードでもある。
【００２１】
図２は、本システムの具体的構成の一例を示すブロック図である。
【００２２】
本システムの具体的想定としては、多数のユーザ端末であるノード１０がインターネット２０に接続されて構築されたネットワークにおいて、ストリームデータ分散配信系に参加した各ユーザ端末に対してストリームデータが配信される構成である。各ノード１０は、例えばＡＤＳＬ伝送方式やＣＡＴＶネットワークを使用して、常時接続型の高速回線によりインターネットに接続される環境を想定している。
【００２３】
あるノード１０は、例えばパーソナルコンピュータ（ＰＣ）１１と、ブロードバンド・ネットワーク接続インターフェース（ＢＢＮＩＤ）１２とを有するユーザ端末である。ＢＢＮＩＤ（Broad-Band Network Interface Device）１２は、具体的にはＡＤＳＬモデムまたはケーブルモデム（ＣＡＴＶインターネット用モデム）等と、ルータ機能とを一体化したネットワーク機器である。これらのノード１０は、インターネット２０を介して受信したストリームデータを、例えばＰＣ１１のディスプレイ上に再生し、かつ他の下流ノード１０へ中継する。
【００２４】
また、あるノード１０は、例えばＰＣ１１とディジタルビデオカメラ（ＤＶＣ）１３とを有する。これらのノード１０は上流ノードとして、ＤＶＣ１３により撮影した映像（音声を含む）からなるストリームデータを、ＰＣ１１にセットされたソフトウェア（同実施形態のメイン構成要素）により送信するユーザ端末である。
【００２５】
（ノードの構成）
次に、図３を参照して、同実施形態のユーザ端末であるノード１０の構成を説明する。
【００２６】
同実施形態のノード１０は、例えばパーソナルコンピュータと、当該コンピュータにセットされるソフトウェアと、各種デバイスとから構成される。図３は、同実施形態のメイン構成要素であり、ＰＣ１１内で稼動する当該ソフトウェア構成を示すブロック図である。
【００２７】
ストリームデータ分散配信システムを構成する各ノード１０は、全て同一のソフトウェア構成を有し、ストリームデータの送信、受信、中継、再生の各機能を実現する。以下、ソフトウェア構成の各要素について具体的に説明する。なお、同実施形態のソフトウェア構成は、特定のＯＳ（operating system）には依存しない設計である。
【００２８】
本ソフトウェア構成は、トポロジエンジン３０と、ストリームエンジン３１と、ストリームスイッチ部３２と、ノード全体の操作環境を司るＧＵＩ（graphical user interface）３３と、ストリーム再生部３４とからなる。
【００２９】
トポロジエンジン３０は、概略的にはメッセージ（制御情報）を交換することにより、各ノード１０間のネットワーク接続関係（トポロジ：topology）を構成する機能を実現する。具体的には、トポロジエンジン３０は、各ノード１０間をＴＣＰ／ＩＰ（transmission control protocol/internet protocol）で接続して、各種のメッセージを送受信する。さらに、トポロジエンジン３０は、直接あるいは間接的に接続された近傍のノードの存在を、メッセージの交換を通じて認識する。トポロジエンジン３０は、当該近傍ノードの存在情報及びストリームデータの受信状態から代替トポロジを求めて、当該トポロジに従って一度構成した各ノード１０間の接続関係を変更する。
【００３０】
ストリームエンジン３１は、ノード１０間でのストリームデータの送信、受信、中継の各機能を実現するソフトウェアである。ストリームエンジン３１は、トポロジエンジン３０から受け取ったトポロジ情報（後述するトポロジ情報テーブル）に基づいて、隣接ノードである下流ノード（単数又は複数）に向けてストリームデータを送信する。また、隣接ノードである上流ノード（単数又は複数）からストリームデータを受信する。
【００３１】
ここで、隣接ノードとは、自ノードと直接的に接続している上流又は下流のノードを意味する。また、近傍ノードとは、自ノードと間接的に接続している上流又は下流のノードを意味する。トポロジ情報（トポロジ情報テーブル）は、各ノード間の論理的な接続関係を示す情報（上流／下流及び隣接／近傍を識別する情報）、及び当該接続関係が形成された隣接または近傍のノードを特定する情報（ネットワークアドレスなど）を含む（図１５を参照）。
【００３２】
ストリームエンジン３１は、ストリームデータ送受信用のＴＣＰ／ＩＰ接続を確立し、各ノード間でストリームデータの送受信を実行する。ストリームエンジン３１は、ストリームデータのデータ形式（符号化方式）に依存しない汎用的配送機能を有し、例えばＭＰＥＧ規格等の各種のデータ形式に適用できる構成である。
【００３３】
ストリームスイッチ部３２は、ストリームエンジン３１と他の機能、デバイス、ファイルとの連携機能を実現するためのソフトウェアである。ストリームスイッチ部３２は主機能として、ストリーム再生部３４を起動し、ストリームエンジン３１から取り出したストリームデータを渡す。ストリーム再生部３４は、ストリームデータから出力用の映像や音声を復号化して、再生するためのソフトウェアである。更に、ストリームスイッチ部３２は、ローカル装置である例えばデジタルビデオカメラ（ＤＶＣ）１３や、ローカルファイル装置３６からストリームデータを取り出し、ストリームエンジン３１に渡すことにより他のノードに送信する機能を実現する。
【００３４】
ＧＵＩ３３は、トポロジエンジン３０、ストリームエンジン３１、ストリームデータスイッチ部３２のそれぞれと、ユーザとのインターフェースを提供する。具体的には、ＧＵＩ３３は、ディスプレイの画面上に、隣接または近傍ノード間のトポロジ（接続関係）を可視的に表示したり、ストリームエンジン３１の通信データ量を可視的に表示する。また、ＧＵＩ３３は、ユーザからのコマンド入力に応じて、他ノードへの明示的接続要求や、自ノードの接続鍵の設定を行なう。接続鍵とは、トポロジエンジン３０に含まれるノード間の接続に関する認証機能で使用される鍵データである。
【００３５】
ここで、接続鍵（ＣＫ）と公開鍵（ＰＫ）とを使用する認証機能を、具体的に説明する。あるノードが配信元（配信サーバの役割）となる場合、後述するように、ＧＵＩ３３の公開鍵取得部３３６が接続鍵発行サーバ７１から公開鍵（ＰＫ）を取得し、これをトポロジエンジン３０の接続認証部３０７が受け取り記憶する（図４及び図７を参照）。接続認証部３０７は、接続要求受理部３０６からの認証要求（接続鍵ＣＫを含む）に応じて、当該公開鍵（ＰＫ）を使用して接続鍵（ＣＫ）を復号して認証する。
【００３６】
これに対して、視聴参加するノードは、ＧＵＩ３３の接続鍵取得部３３４が接続鍵発行サーバ７１から接続鍵（ＣＫ）を取得し、これをトポロジエンジン３０の接続認証部３０７が受け取り記憶する。また、上流ノードへの接続要求の際には、トポロジエンジン３０の接続要求部３０５は、接続認証部３０７から接続鍵（ＣＫ）を受け取り、上流ノードへ接続要求を実行する。
【００３７】
更に、図４から図７を参照して、ノード１０の各ソフトウェア構成を具体的に説明する。
【００３８】
（トポロジエンジン）
トポロジエンジン３０は、図４に示すように、トポロジ管理部３００、トポロジテーブル３０１、負荷状態監視部３０２、制御データ通信部３０３，３０４、接続要求部３０５、接続要求受理部３０６、及び接続認証部３０７の各機能要素部を有する。
【００３９】
トポロジ管理部３００は、直接接続している上流ノードから受信したトポロジ情報（ＴＩ）に基づいて、隣接ノード群又は近傍ノード群の存在と、それらノード間の接続関係（トポロジ）を認識する。また、トポロジ管理部３００は、当該トポロジ情報（ＴＩ）のテーブル形式にしたトポロジ情報テーブルをトポロジテーブル３０１に記憶する（以下ＴＩを情報テーブルと表記する場合がある）。トポロジ管理部３００は、ノード間のトポロジの変化に応じて、トポロジテーブル３０１に記憶した情報テーブル（ＴＩ）を更新する。
【００４０】
トポロジ管理部３００は、直接接続している隣接ノード、即ち上流ノード（通常では単数）及び下流ノード（単数又は複数）のノード識別子（ネットワークアドレス）をストリームエンジン３１に渡す。ストリームエンジン３１は、当該隣接ノードとの間にストリームデータ送受信用のＴＣＰ／ＩＰ接続を確立する。また、トポロジ管理部３００は、トポロジテーブル３０１に記憶された情報テーブル（ＴＩ）をＧＵＩ３３に渡す。ＧＵＩ３３は、当該情報テーブル（ＴＩ）に基づいて、ノード間のトポロジを可視化して画面上に表示する（図７を参照）。
【００４１】
ここで、トポロジ情報テーブル（ＴＩ）について、図１４及び図１５を参照して具体的に説明する。
【００４２】
図１４は、各ノード１０がネットワーク上で接続されている接続関係（トポロジ）の一例を示す図である。各ノード１０は、例えばネットワークアドレスに相当する識別子（ｎｏｄｅ０〜ｎｏｄｅ５）により特定される。各ノード１０は、基本的には、自ノードに対して上流ノードからトポロジ情報（ＴＩ）を受け取り、トポロジテーブル３０１として登録する。そして、各ノード１０は、下流ノードからの接続要求に応じて、当該下流ノードとの接続関係を追加したトポロジ情報（ＴＩ）を下流ノードに提供する。
【００４３】
ここで、仮に、ｎｏｄｅ０の上流ノード１０は、下流ノード（ｎｏｄｅ１，４）との接続関係を記録したトポロジ情報（ＴＩ−０）を、当該下流ノード（ｎｏｄｅ１，４）に提供する。このトポロジ情報（ＴＩ−０）は、図１５（Ａ）に示すように、接続関係にあるノード識別子（ｎｏｄｅ０，１，４）と、隣接ノード（直接的に接続したノード）である上流ノードの識別子（ｎｏｄｅ０のみ）とが対応付けされた情報テーブルである。なお、下流ノードの各識別子（ｎｏｄｅ１，４）に対しては、下流ノードであることを示すフラグ情報を付加してもよい。即ち、自ノード（ｎｏｄｅ０）は、当該フラグ情報により、トポロジ情報（ＴＩ−０）に登録された識別子（ｎｏｄｅ１，４）を隣接ノードである下流ノードとして認識できる。
【００４４】
下流ノード（ｎｏｄｅ１）は、図１４に示すように、自ノードが上流ノードとして下流ノード（ｎｏｄｅ２，３）との接続関係を確立していると想定する。この場合、下流ノード（ｎｏｄｅ１）は、上流ノード（ｎｏｄｅ０）から提供されたトポロジ情報（ＴＩ−０）に、当該接続関係を追加したトポロジ情報（ＴＩ−１）を生成して、下流ノード（ｎｏｄｅ２，３）に提供する（図１５（Ｂ）を参照）。このトポロジ情報（ＴＩ−１）においても、同様に、下流ノードの各識別子（ｎｏｄｅ２，３）に対しては、下流ノードであることを示すフラグ情報を付加してもよい。
【００４５】
ここで、下流ノード（ｎｏｄｅ２）は、提供されたトポロジ情報（ＴＩ−１）から、接続関係（１）〜（３）を認識することができる。即ち、接続関係（１）として、自ノード以外に、上流ノード（ｎｏｄｅ１）に対する隣接ノードとして、下流ノード（ｎｏｄｅ３）の存在を認識できる。接続関係（２）として、自ノードの上流ノード（ｎｏｄｅ１）に対して、更に上流となるノード（ｎｏｄｅ０）の存在を認識できる。接続関係（３）として、上流ノード（ｎｏｄｅ０）の下流ノード（ｎｏｄｅ４）の存在を認識できる。これら間接的に接続されたノードｎｏｄｅ０、ｎｏｄｅ３，ｎｏｄｅ４は、自ノード（ｎｏｄｅ２）にとっての近傍ノードである。
【００４６】
同様に、下流ノード（ｎｏｄｅ３）は、提供されたトポロジ情報（ＴＩ−１）から、接続関係（１）〜（３）を認識することができる。即ち、接続関係（１）として、自ノード以外に、上流ノード（ｎｏｄｅ１）に対する隣接ノードとして、下流ノード（ｎｏｄｅ２）の存在を認識できる。接続関係（２）として、自ノードの上流ノード（ｎｏｄｅ１）に対して、更に上流となるノード（ｎｏｄｅ０）の存在を認識できる。接続関係（３）として、上流ノード（ｎｏｄｅ０）の下流ノード（ｎｏｄｅ４）の存在を認識できる。
【００４７】
一方、下流ノード（ｎｏｄｅ４）は、図１４に示すように、自ノードが上流ノードとして下流ノード（ｎｏｄｅ５）との接続関係を確立していると想定する。この場合、下流ノード（ｎｏｄｅ４）は、提供されたトポロジ情報（ＴＩ−０）に、当該接続関係を追加したトポロジ情報（ＴＩ−４）を生成して、下流ノード（ｎｏｄｅ５）に提供する（図１５（Ｃ）を参照）。このトポロジ情報（ＴＩ−４）においても、同様に、下流ノードの識別子（ｎｏｄｅ５）に対しては、下流ノードであることを示すフラグ情報を付加してもよい。
【００４８】
以上要するに、各ノードは、基本的に上流から下流へ提供されるトポロジ情報（ＴＩ）をトポロジテーブル３０１として管理（登録、更新、提供等）することにより、隣接ノード及び近傍ノードの存在を認識することができる。隣接ノードとは、前述したように、自ノードと直接的に接続する上流ノード又は下流ノードである。近傍ノードとは、自ノードと間接的に接続されたノードである（必ずしも自ノードより上流又は下流の関係とは限らない）。
【００４９】
なお、トポロジ情報（ＴＩ）は、下流に行くほど情報量が増大することになる。このため、予め情報量の上限値を設定し、当該上限値を超えた場合には、トポロジ管理部３００は、自ノードから最も遠い関係にあるノードの情報（識別子等）を削除するような構成が望ましい。
【００５０】
負荷状態監視部３０２は、図４に示すように、後述するストリームエンジン３１のストリームデータバッファ（ＦＩＦＯ式バッファ）の格納状態（ＳＢ）を監視し、これによりストリームエンジン３１の負荷状態を判断する。負荷状態監視部３０２は、ストリームエンジン３１の負荷状態が許容範囲を超える場合には、トポロジ管理部３００に対して下流ノードの切断を指示する。なお、後述するように、ストリームエンジン３１のストリームデータバッファの格納状態（ＳＢ）は、ＧＵＩ３３に対しても通知される。
【００５１】
制御データ通信部３０３は、接続要求部３０５からの指示に応じて、上流ノード１０Ａとの制御データ通信チャネルを確立する。上流ノード１０Ａは、自ノード１０からはストリームデータの送信元ノードに相当する。制御データ通信部３０３は、トポロジ情報（ＴＩ）を上流ノード１０Ａから受信する。また、制御データ通信部３０３は、上流ノード１０Ａを別のノードに切替える場合に、制御データ通信チャネルの切断を行なう。
【００５２】
制御データ通信部３０４は、接続要求受理部３０６からの指示に応じて、下流ノード１０Ｂとの制御データ通信チャネルを確立する。下流ノード１０Ｂは、自ノードから送信するストリームデータの送信先ノードに相当する。制御データ通信部３０４は、トポロジ情報（ＴＩ）を下流ノード１０Ｂへ送信する。また、制御データ通信部３０４は、下流ノード１０Ｂが上流ノードを自ノードから別ノードへ切替えるときに、制御データ通信チャネルの切断を行なう。
【００５３】
接続要求部３０５は、ＧＵＩ３３からの上流ノードの指定（ＣＲ）に応じて、上流ノード１０Ａに対する接続要求を行なう。さらに、接続要求部３０５は、接続要求を送信した上流ノード１０Ａからの接続受理通知に応じて、制御データ通信部３０３に対して接続を指示する。このとき、トポロジ管理部３００に対して、制御データ通信チャネルが確立された上流ノード１０Ａのネットワークアドレスの登録を指示する。接続要求部３０５は、接続要求に伴なって、接続対象の上流ノード１０Ａとの間で接続認証処理に必要な接続鍵データ（ＣＫ）と公開鍵データ（ＰＫ）の交換を行なう。
【００５４】
接続要求受理部３０６は、下流ノード１０Ｂからの接続要求に応じて、接続認証部３０７により認証された場合に接続受理を行なう。接続要求受理部３０６は、接続受理に応じて制御データ通信部３０４に対して接続を指示すると共に、トポロジ管理部３００に対して、制御データ通信チャネルが確立された下流ノード１０Ｂのネットワークアドレスの登録を指示する。接続要求受理部３０６は、接続受理に伴なって、接続対象の下流ノード１０Ｂとの間で接続認証処理に必要な接続鍵データ（ＣＫ）と公開鍵データ（ＰＫ）の交換を行なう。なお、接続認証処理手順については、後述する。
【００５５】
接続認証部３０７は、接続要求部３０５及び接続受理部３０６による他のノード（上流ノードと下流ノード）との接続に必要な接続認証処理を実行する。接続認証部３０７は、公開鍵暗号方式を利用した認証処理を実行し、認証チケットに相当する接続鍵データ（ＣＫ）と公開鍵データ（ＰＫ）をＧＵＩ３３から受け取る。また、接続認証部３０７は、接続要求部３０５及び接続要求受理部３０６のそれぞれとの間で、接続鍵データ（ＣＫ）と公開鍵データ（ＰＫ）の交換を実行する。
【００５６】
ここで、前述したように、あるノードが配信元（配信サーバの役割）となる場合、ＧＵＩ３３の公開鍵取得部３３６が接続鍵発行サーバ７１から公開鍵データ（ＰＫ）を取得し、これをトポロジエンジン３０の接続認証部３０７が受け取り記憶する。接続認証部３０７は、接続要求受理部３０６からの認証要求（接続鍵データＣＫを含む）に応じて、当該公開鍵データ（ＰＫ）を使用して接続鍵データ（ＣＫ）を復号して認証する。また、視聴参加するノードは、ＧＵＩ３３の接続鍵取得部３３４が接続鍵発行サーバ７１から接続鍵データ（ＣＫ）を取得し、これをトポロジエンジン３０の接続認証部３０７が受け取り記憶する。また、上流ノードへの接続要求の際には、トポロジエンジン３０の接続要求部３０５は、接続認証部３０７から接続鍵データ（ＣＫ）を受け取り、上流ノードへ接続要求を実行する。
【００５７】
（ストリームエンジン）
ストリームエンジン３１は、図５に示すように、ストリームデータ送信部３１１、ストリームデータ受信部３１２、ストリームデータバッファ３１３、ストリームデータバッファ状態監視部３１４、及びストリームデータ通信接続管理部３１５の各機能要素部を有する。
【００５８】
ストリームデータ送信部３１１は、ストリームデータバッファ３１３に格納されたストリームデータを下流ノードに送信する（中継する）。このとき、ストリームデータ送信部３１１は、ストリームデータ通信接続管理部３１５から接続許可の指示がなされた下流ノードに対してストリームデータを送信する。
【００５９】
ストリームデータバッファ３１３は、ストリームデータ受信部３１２で受信された上流ノードからのストリームデータ、または、ストリームスイッチ部３２から受け取ったストリームデータを一時的に保存するＦＩＦＯ式バッファである。ストリームデータバッファ状態監視部３１４は、ストリームデータバッファ３１３の格納状態（ＳＢ）を常に監視し、トポロジエンジン３０及びＧＵＩ３３に通知する。ここで、格納状態（ＳＢ）とは、バッファ３１３のサイズに対してストリームデータが格納されているデータ量を意味する。
【００６０】
ストリームデータ受信部３１２は、ストリームデータ通信接続管理部３１５から指定された上流ノードとの間にストリームデータ通信チャネルを確立する。そして、当該上流ノードから送信されたストリームデータを受信して、ストリームデータバッファ３１３に書き込む。ストリームデータ通信接続管理部３１５は、ストリームデータ通信チャネルによる接続関係を確立すべき隣接ノードのリストをトポロジエンジン３０から受け付ける。
【００６１】
（ストリームスイッチ部）
ストリームデータスイッチ部３２は、図６に示すように、ＧＵＩ３３からの指定（ＳＷ）に応じて、ストリームデータの入出力を切替える。即ち、ストリームスイッチ部３２は、ストリームエンジン３１から受け取ったストリームデータを、ストリームデータ再生部３４またはノードのローカルファイル装置６０に転送する。また、ストリームスイッチ部３２は、ローカル装置であるデジタルビデオカメラ（ＤＶＣ）３５や、エンコーダデバイス３６からのストリームデータ又はローカルファイル装置６０に格納しているストリームデータを読出して、ストリームエンジン３１に転送する。
【００６２】
（ＧＵＩ）
ＧＵＩ３３は、図７に示すように、ストリームデータ中継制御部３３１、中継状態（品質）表示部３３２、トポロジ表示部３３３、接続鍵取得部３３４、上流ノード決定部３３５、及び公開鍵取得部３３６の各機能要素部を有する。ＧＵＩ３３は、表示装置７０の表示画面上のアイコンに対する操作に応じたコマンドを入力したり、当該表示画面上に各種の表示情報を表示する。
【００６３】
ストリームデータ中継制御部３３１は、ユーザからのコマンド入力に応じて、ストリームデータ中継の停止又は再開の指示（ＳＣ）をストリームエンジン３１に対して行なう。中継状態（品質）表示部３３２は、ストリームエンジン３１からストリームデータバッファ３１３の格納状態（ＳＢ）を読取り、表示画面上に表示させる処理を実行する。
【００６４】
トポロジ表示部３３３は、トポロジエンジン３０からのトポロジ情報（ＴＩ）を受け取り、隣接ノード又は近傍ノードの接続関係を表示画面上に表示させる処理を実行する。接続鍵取得部３３４は、ユーザから入力された接続鍵データ（ＣＫ）、または後述する接続鍵発行サーバ７１から発行された接続鍵データ（ＣＫ）をトポロジエンジン３０に渡す。上流ノードへの接続要求の際には、トポロジエンジン３０の接続要求部３０５は、接続認証部３０７から接続鍵データ（ＣＫ）を受け取り、上流ノードへ接続要求を実行する。
【００６５】
ＧＵＩ３３の公開鍵取得部３３６は、あるノードが配信元（配信サーバの役割）となる場合、接続鍵発行サーバ７１から公開鍵データ（ＰＫ）を取得し、トポロジエンジン３０の接続認証部３０７に渡す。接続認証部３０７は、接続要求受理部３０６からの認証要求（接続鍵データＣＫを含む）に応じて、当該公開鍵データ（ＰＫ）を使用して接続鍵データ（ＣＫ）を復号して認証する。
【００６６】
上流ノード決定部３３５は、ユーザから指定された上流ノード、または後述するノード仲介サーバ７２から仲介された上流ノードのネットワークアドレスをトポロジエンジン３０に渡す。
【００６７】
（接続確立手順）
以下図８を参照して、同実施形態のノード間の接続処理の手順を説明する。
【００６８】
ノード間の接続処理は、図８（Ａ）に示す自ノードから見て下流ノードとの接続処理と、同図（Ｂ）に示す自ノードから見て上流ノードとの接続処理とに分けられる。要するに、自ノードは、相対的関係としての上流ノードまたは下流ノードとの接続処理を実行する。
【００６９】
まず、上流ノードとの接続処理では、自ノードのトポロジエンジン３０は、上流ノードに対して接続要求メッセージを送信する（ステップＳ１）。具体的には、図４に示す接続要求部３０５が、接続鍵データとＩＤデータとを含む接続要求メッセージを送信する。ＩＤデータは、例えばストリームデータ配信を行なう特定のネットワークを構築する目的のグループＩＤ、またはストリームデータのコンテンツ毎に設定されたコンテンツＩＤ等を含む。また、ＩＤデータは、各ノードのハードウェアを識別するためのＩＤデータ（例えばネットワーク・インターフェースのＭＡＣアドレスや、マイクロプロセッサに埋め込まれたシリアル番号など）を含む。
【００７０】
自ノードは、上流ノードから接続要求に対する回答（接続認証処理の結果）を受信するまで待機状態となる（ステップＳ２）。そして、上流ノードから接続許可のメッセージを受信すると、トポロジエンジン３０は、当該上流ノードとの制御通信チャネルを確立し、当該上流ノードをトポロジテーブル３０１に登録する（ステップＳ４）。また、トポロジエンジン３０は、上流ノードから受信した接続許可のメッセージに含まれる公開鍵データを記憶する。更に、トポロジエンジン３０は、接続した上流ノードをストリームエンジン３１に登録させる（ステップＳ５）。これにより、ストリームエンジン３１は、当該上流ノードとストリームデータ通信チャネルを接続し、ストリームデータを受信可能な状態となる。
【００７１】
一方、自ノードは、上流ノードから接続拒否のメッセージを受信すると、別の上流ノードとの接続を試みる処理に移行できる（ステップＳ３のＮＯ，Ｓ６）。ここで、別の上流ノードとは、自ノードが要望するストリームデータの配信を受けるために必要な上流ノードであり、ストリームデータ分散配信ネットワークを構成する同一グループに所属するノードである（後述する）。
【００７２】
次に、下流ノードとの接続処理、即ち、自ノードが相対的に上流ノードの場合の接続処理を、図８（Ａ）に示すフローチャートを参照して説明する。
【００７３】
自ノードは、下流ノードから接続鍵データを含む接続要求メッセージを受信すると、接続認証処理を実行する（ステップＳ１１，Ｓ１２）。トポロジエンジン３０の接続認証部３０７は、接続鍵を予め取得してある公開鍵データを用いて復号することにより接続認証処理を実行し、認証できない場合には接続拒否メッセージを下流ノードに返信する（ステップＳ１３のＮＯ，Ｓ１７）。
【００７４】
一方、トポロジエンジン３０は、認証成功の場合には、既存の下流ノードへのストリームデータ中継の品質が規定値以上であるか否かを判定し、判定結果が規定値以下の場合には接続拒否メッセージを下流ノードに返信する（ステップＳ１１４のＮＯ，Ｓ１７）。即ち、新たな下流ノードを接続した結果、中継品質が規定値以下になる場合には、自ノードは、下流ノードを増やすことを防ぐため接続を拒否する。
【００７５】
トポロジエンジン３０は、最終的に接続を許可する場合には、公開鍵データを含む接続許可メッセージを下流ノードに返信する（ステップＳ１４のＹＥＳ，Ｓ１５）。更に、トポロジエンジン３０は、接続を許可した下流ノードをトポロジテーブル３０１に登録すると共に、当該下流ノードをストリームエンジン３１に登録させる（ステップＳ１６）。これにより、ストリームエンジン３１は、当該下流ノードとストリームデータ通信チャネルを接続し、ストリームデータを送信可能な状態となる。
【００７６】
以上のような接続処理により、上流ノード及び下流ノードの各ノード間の接続が確立されて、図１に示すように、ストリームデータ分散配信系のネットワークを構成することができる。
【００７７】
（上流ノード取得手順）
以下図９を参照して、自ノードがストリームデータ配信を受けるために、即ちストリームデータ分散配信系に参加するために、新規に上流ノードを取得するための手順を説明する。ここで、同図（Ａ），（Ｃ）に示すステップＳ２１からステップＳ２６は、各ノード側での処理手順を示す。また、同図（Ｂ）に示すステップＳ３１からステップＳ３７は、ノード仲介サーバ側での処理手順を示す。
【００７８】
ここでは、ノード仲介サーバ（図７のサーバ７２）の存在を想定し、このノード仲介サーバから上流ノードの紹介を受ける構成を説明する。
【００７９】
ノード仲介サーバは、グループＩＤに対応する、即ち一つのストリームデータ分散配信系に属する複数のノードをノードデータベース７２０に登録している。当然ながら、ノードデータベース７２０には、複数のグループＩＤ（ストリームデータ分散配信系）についてそれぞれに属すノードを登録することができる。
【００８０】
まず、自ノードは、上流ノード紹介要求メッセージ（グループＩＤを含む）を、ノード仲介サーバに送信する（ステップＳ２１）。ノード仲介サーバは、当該メッセージを受信すると、ノードデータベース７２０から当該ストリームデータ分散配信系に属すノードを検索する（ステップＳ３１，Ｓ３２）。そして、ノード仲介サーバは、検索したノードのネットワークアドレスを含む応答メッセージを返信する（ステップＳ３３）。
【００８１】
自ノードは、応答メッセージから紹介された上流ノードのネットワークアドレスを取得し、当該上流ノードとの接続処理に移行する（ステップＳ２２，Ｓ２３）。ステップＳ２３は、図８のステップＳ１から開始される処理ステップである。この接続処理では、前述したように、紹介された上流ノードは、接続認証処理を実行して、最終的に接続許可又は接続拒否の判定を実行する。自ノードは、上流ノードとの接続が完了しない場合には、再度、ノード仲介サーバに対して紹介要求メッセージを送信する（ステップＳ２４のＮＯ，Ｓ２１）。
【００８２】
上流ノードとの接続が完了すると、ノード仲介サーバに接続完了メッセージを送信する（ステップＳ２４のＹＥＳ，Ｓ２５）。ノード仲介サーバは、当該メッセージを受信すると、ノードデータベース７２０に当該自ノードを登録する（ステップＳ３４，Ｓ３５）。一方で、ノード仲介サーバは、自ノードからストリームデータ分散配信系ネットワークからの離脱を示すノード離脱メッセージを受信すると、ノードデータベース７２０から当該自ノードの登録を削除する（ステップＳＳ２６，Ｓ３６，Ｓ３７）。
【００８３】
以上のような処理により、ストリームデータ分散配信系のネットワークに参加を希望するユーザは、ストリームデータを中継してくれる上流ノードに接続することができる。なお、ノード仲介サーバを介在させることなく、別の方法で上流ノードのネットワークアドレスを取得できれば、当該上流ノードへの接続は可能である。
【００８４】
（トポロジ変更手順）
以下図１０を参照して、各ノード間を接続して構成されたストリームデータ分散配信系ネットワークの接続関係であるトポロジを変更する場合の手順を説明する。
【００８５】
ここでは、図１０（Ａ）に示すように、相対的に下流側のノード（１）、ノード（２）、及び上流側のノード（３）が接続された状態のトポロジを想定する。ノード（２）は、同図（Ｂ）に示すように、トポロジ変更処理として、ノード（１）に対する上流ノードの変更処理を実行する。即ち、ノード（２）は、代替上流ノード（３）の指定を含む上流ノード変更メッセージを、下流ノード（１）に送信する（ステップＳ４１）。
【００８６】
下流ノード（１）は、同図（Ｃ）に示すように、上流ノード（２）から上流ノード変更メッセージを受信すると、指定された代替上流ノード（３）に対する接続処理を実行する（ステップＳ４５，Ｓ４６）。接続処理では、下流ノード（１）は、代替上流ノード（３）に対して接続要求メッセージを送信する。代替上流ノード（３）は、同図（Ｄ）に示すように、受信した接続要求メッセージに基づいて、下流ノード（１）との接続処理を実行する（ステップＳ５０）。そして、代替上流ノード（３）は、接続許可メッセージまたは接続拒否メッセージを下流ノード（１）に返信する。なお、ステップＳ４６，Ｓ５０は、図８のステップＳ１，Ｓ１１から開始される処理ステップに対応する。
【００８７】
下流ノード（１）は、代替上流ノード（３）から接続許可メッセージを受信した場合に、上流変更完了の通知を上流ノード（２）に送信する（ステップＳ４７）。下流ノード（１）は、上流ノード（２）との通信チャネル（制御データ通信チャネルとストリームデータ通信チャネル）を切断し、トポロジテーブル３０１から上流ノード（２）の登録を削除する（ステップＳ４８，Ｓ４９）。
【００８８】
一方、上流ノード（２）は、上流変更完了の通知を受信すると、下流ノード（１）との通信チャネル（制御データ通信チャネルとストリームデータ通信チャネル）を切断し、トポロジテーブル３０１から下流ノード（２）の登録を削除する（ステップＳ４２，Ｓ４３，Ｓ４４）。
【００８９】
以上のような上流変更処理により、上流ノードと下流ノードとの接続関係が変更されて、結果として各ノード間の接続関係であるトポロジを変更できる。このトポロジ変更機能は、例えばノード（２）がネットワークから離脱したり、新たにノード（３）が参加するような場合に有効である。即ち、下流ノード（１）は、各ノードの状況に応じて動的かつ自律的に上流ノードを変更できるため、ストリームデータを停止することなく受信することができる。
【００９０】
（接続切断手順）
以下図１１を参照して、同実施形態のノード間の接続切断処理の手順を説明する。ここでは、下流ノードから上流ノードに対する接続を切断する場合の手順を説明する。逆の場合も、基本的には同様の手順となる。
【００９１】
まず、下流ノードは、同図（Ａ）に示すように、接続されている上流ノードに対して切断メッセージを送信する（ステップＳ６１）。上流ノードは、同図（Ｂ）に示すように、切断メッセージを受信すると、下流ノードに対して切断受理の通知を送信する（ステップＳ６６，Ｓ６７）。
【００９２】
下流ノードは、上流ノードから切断受理の通知を受信すると、当該上流ノードとの通信チャネル（制御データ通信チャネルとストリームデータ通信チャネル）を切断する（ステップＳ６２，Ｓ６３）。さらに、下流ノードは、トポロジテーブル３０１から当該上流ノードの登録を削除する（ステップＳ６４）。
【００９３】
一方、上流ノードは、下流ノードとの通信チャネル（制御データ通信チャネルとストリームデータ通信チャネル）を切断する（ステップＳ６８）。さらに、上流ノードは、トポロジテーブル３０１から下流ノードの登録を削除する（ステップＳ６９）。
【００９４】
以上のような接続切断処理により、各ノードは、任意のタイミングで接続関係にあるノードとの接続を切断できる。この接続切断処理により、各ノード間のトポロジが変更となる。
【００９５】
（下流ノードの処理手順）
図１２は、下流ノード側の処理手順を整理して説明するためのフローチャートである。
【００９６】
まず、ユーザがストリームデータ分散配信系ネットワークに参加する場合には、ユーザ端末が下流ノードとして初期化処理を実行することになる（ステップＳ７０）。具体的には、前述したように、ノード仲介サーバから上流ノードの紹介を受ける（ステップＳ８０）。当該下流ノードは、紹介された上流ノードに対する接続要求を実行する（ステップＳ８１）。上流ノードから接続許可通知を受信した場合には、上流ノードとの接続が完了となる（ステップＳ８２のＹＥＳ）。これにより、下流ノードは、紹介された上流ノードからストリームデータを受信することができる。
【００９７】
次に、接続されている上流ノードから上流変更メッセージを受信すると（ステップＳ７１）、下流ノードは、当該メッセージに含まれる代替上流ノードに対して、接続要求を行なう（ステップＳ８１）。この接続要求に対して、代替上流ノードから接続許可通知を受信した場合には、上流ノードとの接続が完了となる（ステップＳ８２のＹＥＳ）。ここで、下流ノードは、紹介された上流ノードまたは代替上流ノードから接続拒否通知を受信した場合あるいは何ら応答が得られない場合には、ノード仲介サーバから新たな上流ノードの紹介を受ける（ステップＳ８２のＮＯ（Ａ），Ｓ８０）。
【００９８】
一方、下流ノードは、接続している上流ノードとの通信途絶（通信チャネルの切断も含む）を検出した場合には（ステップＳ７２）、トポロジテーブル３０１から別の上流ノードを選択する（ステップＳ８３）。下流ノードは、選択した上流ノードに対する接続要求を実行する（ステップＳ８１）。上流ノードから接続許可通知を受信した場合には、上流ノードとの接続が完了となる（ステップＳ８２のＹＥＳ）。
【００９９】
選択した上流ノードから接続拒否通知を受信した場合には、下流ノードは、トポロジテーブル３０１から全ての上流ノードの候補について、選択及び接続要求を実行する（ステップＳ８２のＮＯ（Ｂ），Ｓ８４のＮＯ）。全ての上流ノードの候補から接続拒否通知を受信した場合には、下流ノードは、改めて、ノード仲介サーバから新たな上流ノードの紹介を受ける（ステップＳ８４のＹＥＳ，Ｓ８０）。
【０１００】
また、下流ノードは、接続している上流ノードからのストリームデータ中継の品質低下を検出した場合には（ステップＳ７３）、当該上流ノードとの接続を切断し、トポロジテーブル３０１から別の上流ノードを選択する処理に移行する（ステップＳ８５，Ｓ８３）。以後の処理については、前記の上流ノードとの通信途絶の場合と同様である。
【０１０１】
（トポロジ情報の交換手順）
図１３は、各ノード間でのトポロジ情報の交換手順を整理して説明するためのフローチャートである。
【０１０２】
各ノードは、前述したように、トポロジエンジン３０において、トポロジ管理部３００、トポロジテーブル３０１、及び制御データ通信部３０３，３０４により、トポロジ情報テーブル（ＴＩ）を交換する。
【０１０３】
ここでは、上流ノードから下流ノードに対して、トポロジ情報テーブル（ＴＩ）を送信する場合を想定する。上流ノードは、接続した下流ノードに対して、自ノードと隣接ノードまたは近傍ノードとの接続関係を示すトポロジ情報テーブルを送信する（ステップＳ９０）。下流ノードは、上流ノードからトポロジ情報テーブルを受信すると、トポロジテーブル３０１に併合（追加）処理して格納する（ステップＳ９１，Ｓ９２）。
【０１０４】
以上のように同実施形態によれば、特にブロードバンドのインターネット等のネットワーク環境において、各ノードに設けられたトポロジエンジン３０の機能により、各ノード間を接続して、上流ノードと下流ノードとから構成されるストリームデータ分散配信系ネットワークを形成することができる。具体的には、図１に示すように、例えば最上流のノード１０（Ａ）から送信するストリームデータを、近傍の下流ノード１０（Ｂ）に配信する。当該下流ノード１０（Ｂ）は、受信したストリームデータを復号して再生すると同時に、上流ノードとして、更に下流ノードに対して当該ストリームデータを中継する。同様にして、各下流ノードは、受信したストリームデータを復号再生すると同時に、上流ノードとして、更に下流ノードに対して中継する。但し、一般的には、各ノードは、ＩＳＰ（インターネット接続サービスプロバイダ）や通信事業者などを介して、インターネットへの接続を行なうことになる。
【０１０５】
従って、ストリームデータ配信用のサーバが存在しなくても、クライアント（ユーザ端末）のみから構成されるストリームデータ配信系のネットワークを実現できる。このような分散ネットワーク形成機能を利用することにより、ストリームデータ配信用のサーバからストリームデータ配信を行なうネットワークの場合でも、当該サーバの配信処理に要する負荷の軽減を図ることができる。即ち、例えば放送事業者が運営するサーバから、各ユーザ端末にストリームデータを配信すると共に、当該各ユーザ端末から他の各ユーザ端末に対して当該ストリームデータを配信することができる。これにより、放送事業者が運営するサーバの負荷を、ストリームデータ配信先のユーザ端末数に依存せずに低く抑えることができる。
【０１０６】
また、いわゆる商業用ストリームデータ配信系のネットワークではなく、ユーザが個人的な撮影映像などを、インターネットに接続した関係者のみの各ノードに対して配信するためのプライベートネットワークを構築することができる。このようなプライベートネットワークを利用して、パーソナル放送とも言えるサービスが可能となる。
【０１０７】
なお、同実施形態では、ノード仲介サーバの存在を想定した場合について言及している。このノード仲介サーバは、ストリームデータ配信用のサーバ、即ち分散配信系の中央制御サーバとは全く異なるものであり、単に上流サーバとしての候補を紹介するだけの限定された機能しか備えていないサーバである。従って、当該サーバは、ネットワークを構成する全ノードを正確に認識するようなデータベースを必要とせず、ネットワークに参加しているノードの中で未知のノードが存在していても差し支えない。また、ユーザが、ノード仲介サーバからの紹介とは別の方法で、上流ノードを知っている場合には、当然ながら、ノード仲介サーバは不要である。要するに、同実施形態では、ノード仲介サーバの存在は必須要件ではなく、実際上のサービス効率の観点からは望ましい存在である。
【０１０８】
（同実施形態に適用可能なビジネスモデルまたは応用例）
同実施形態のストリームデータ分散配信系ネットワークを適用することにより、以下のようなビジネスモデルまたは応用例を実現できる。
【０１０９】
（１）例えば結婚式の披露宴などで、ユーザが個人的に撮影した映像を、ストリームデータとして各ユーザ（関係者のみ）に配信するパーソナル放送またはコミュニティ放送とも呼べるシステムを実現できる。この場合、ネットワークを構築する各ノードは、例えば公開鍵方式による接続認証機能により特定されるユーザ端末のみから構成される。
【０１１０】
（２）前記（１）の拡張系として、ビデオカメラを用意した複数のユーザが集まり、各ユーザ間で同時に送受信することにより、ビデオ・チャット・サービスを実現できる。
【０１１１】
（３）ビデオカメラを備えたノードを、例えば街頭など屋外の特定の場所や、ビル、コンサートホール等に設置し、事件やイベントが発生した場合に、当該ビデオカメラにより撮影した映像（音声付）を、予め契約し、接続鍵の配布を受けた各ノードに対して中継するロケーション・サービスとも呼べるビジネスモデルを実現できる。この場合、各ノードは、サービス事業会社と契約することにより、当該会社が運営するネットワークに接続して、中継サービスを受けられる。具体的には、いわゆるインターネット・コンサートライブ放送を容易に実現できる。
【０１１２】
（４）コンテンツの商用配信サービス系ネットワークにおいて、事業者が運営するサーバから各ユーザに対して、有料のコンテンツを配信する場合に、ユーザが中継ノードを提供することにより、サーバ側の配信負荷を軽減できる。この場合、中継ノードを提供したユーザに対して、当該コンテンツの視聴チケットに交換できるポイントを提供するようなインセンティブを与えることにより、同実施形態のシステムを有効に利用することができる。
【０１１３】
（５）ノード間の制御データ通信チャネルを利用して、下流ノードから上流ノードへの情報通信を含め、各ノード間をピア・ツー・ピア（peer-to-peer）通信で結ぶことによって、ストリーム配信と同時に様々なコミュニケーション・サービスを実現することができる。例えば、下流から上流へと情報を集約することにより、配信コンテンツの人気投票サービス、クイズやアンケートに対するリアルタイム・サービスが可能となる。この場合も、同時アクセスを処理する大規模なサーバが不要になることがメリットである。また、下流ノード同士でチャットなどのコミュニケーションをストリーム配信と同時に実現できる。コンサート放送を見ながら、視聴者同士がチャットし合うようなサービスを提供できる。
【０１１４】
【発明の効果】
以上詳述したように本発明によれば、インターネットなどのネットワーク環境において、特にユーザ端末間での自律的又は個人的なストリームデータ配信を実現できるストリームデータ分散配信技術を提供できる。具体的には、例えばブロードバンドのネットワーク環境を利用して、特別のストリームデータ配信用サーバを用意することなく、クライアント（端末ノード）間での動画・音声のストリームデータの分散配信を実現できる。
【図面の簡単な説明】
【図１】本発明の実施形態に関するストリームデータ分散配信システムの概念を示す図。
【図２】同実施形態に関するシステムの具体的構成の一例を示すブロック図。
【図３】同実施形態に関するノード（ユーザ端末）の構成を示すブロック図。
【図４】同ノードのトポロジエンジンの構成を示すブロック図。
【図５】同ノードのストリームエンジンの構成を示すブロック図。
【図６】同ノードのストリームデータスイッチ部の構成を示すブロック図。
【図７】同ノードのＧＵＩの構成を示すブロック図。
【図８】同実施形態に関するノード間の接続確立処理の手順を説明するためのフローチャート。
【図９】同実施形態に関する上流ノード取得手順を説明するためのフローチャート。
【図１０】同実施形態に関するトポロジ変更手順を説明するためのフローチャート。
【図１１】同実施形態に関するノード間の接続切断処理の手順を説明するためのフローチャート。
【図１２】同実施形態に関する下流ノード側の処理手順を説明するためのフローチャート。
【図１３】同実施形態に関する各ノード間でのトポロジ情報の交換手順を説明するためのフローチャート。
【図１４】同実施形態に関するトポロジ情報の内容を説明するための図。
【図１５】同トポロジ情報の一例を示す図。
【符号の説明】
１０…ノード
１１…パーソナルコンピュータ（ＰＣ）
１２…ルータ
１３…ディジタルビデオカメラ（ＤＶＣ）
２０…インターネット
３０…トポロジエンジン
３１…ストリームエンジン
３２…ストリームスイッチ部
３３…ＧＵＩ
３４…ストリームデータ再生部
３００…トポロジ管理部
３０１…ノードテーブル
３０２…負荷状態監視部
３０３…制御データ通信部
３０４…制御データ通信部
３０５…接続要求部
３０６…接続要求受理部
３０７…接続認証部
３１１…ストリームデータ送信部
３１２…ストリームデータ受信部
３１３…ストリームデータバッファ
３１４…ストリームデータバッファ状態監視部
３１５…ストリームデータ通信接続管理部
【図１】
0003955989.tif 000002
【図２】
0003955989.tif 000003
【図３】
0003955989.tif 000004
【図４】
0003955989.tif 000005
【図５】
0003955989.tif 000006
【図６】
0003955989.tif 000007
【図７】
0003955989.tif 000008
【図８】
0003955989.tif 000009
【図９】
0003955989.tif 000010
【図１０】
0003955989.tif 000011
【図１１】
0003955989.tif 000012
【図１２】
0003955989.tif 000013
【図１３】
0003955989.tif 000014
【図１４】
0003955989.tif 000015
【図１５】
0003955989.tif 000016