JP3955989B2 - Stream data distributed delivery method and system - Google Patents

Stream data distributed delivery method and system Download PDF

Info

Publication number
JP3955989B2
JP3955989B2 JP2001364944A JP2001364944A JP3955989B2 JP 3955989 B2 JP3955989 B2 JP 3955989B2 JP 2001364944 A JP2001364944 A JP 2001364944A JP 2001364944 A JP2001364944 A JP 2001364944A JP 3955989 B2 JP3955989 B2 JP 3955989B2
Authority
JP
Japan
Prior art keywords
node
user terminal
stream data
connection
downstream
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2001364944A
Other languages
Japanese (ja)
Other versions
JP2003169089A (en
JP2003169089A5 (en
Inventor
▲隆▼之 齊藤
雅晴 高野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BITMEDIA INC.
Original Assignee
BITMEDIA INC.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BITMEDIA INC. filed Critical BITMEDIA INC.
Priority to JP2001364944A priority Critical patent/JP3955989B2/en
Priority to US10/184,415 priority patent/US20030101253A1/en
Publication of JP2003169089A publication Critical patent/JP2003169089A/en
Publication of JP2003169089A5 publication Critical patent/JP2003169089A5/ja
Application granted granted Critical
Publication of JP3955989B2 publication Critical patent/JP3955989B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、一般的にはネットワーク環境下でストリームデータを分散配信する方法に関し、特にインターネット上においてユーザ端末間でストリームデータの分散配信機能を実現する技術に関する。
【0002】
【従来の技術】
近年、インターネットを代表とする情報通信ネットワーク環境において、ブロードバンド化の推進により、主として動画(映像)や音声のコンテンツ情報(以下ストリームデータと呼ぶ場合がある)の伝送を容易に行なうことが可能になりつつある。ブロードバンド化のネットワーク環境としては、例えばADSL(asymmetric digital subscriber line)伝送方式やCATV(cable television)ネットワークを利用した有線通信方式以外に、携帯電話などの無線通信方式(移動体通信方式)によるネットワーク環境も含まれる。
【0003】
ところで、インターネットに接続されるユーザ端末としては、パーソナルコンピュータ、各種のディジタル情報機器(例えばディジタル・テレビ受信機など)、携帯電話(PHSも含む)、あるいは無線通信機能を有する携帯型情報端末(PDA:personal digital assistantとも呼ばれている)等が含まれる。
【0004】
ブロードバンド化のネットワーク環境下で、これらのユーザ端末を使用することにより、ストリームデータを受信して、ユーザの違和感を伴なうことなく、動画や音声のコンテンツ情報を再生することが可能となる。従来では、インターネットによる情報サービスや、個人間の情報交換では、文字情報や静止画像が主体であり、動画や音声などのストリームデータの通信は限定されたものであった。従って、今後、ブロードバンド化のネットワーク環境の普及に伴なって、ストリームデータ配信サービス事業などのビジネス分野だけでなく、ユーザ間で個人的情報を交換するプライベートの分野でも、ストリームデータ配信に対する需要が増大することが予想される。
【0005】
【発明が解決しようとする課題】
ネットワーク環境下でのブロードバンド化の推進により、インターネットの基幹系や、各家庭のユーザ端末と接続する支線系について、帯域の増強や通信コストの低減化が実現されつつある。
【0006】
しかし一方で、ストリームデータ配信に対する需要の増大化に伴なって、ストリームデータを送信するためのシステムに対して、負荷容量(配信能力)の増大化が要求されている。このことは、特にサーバを中心とする多大な設備投資が要求されて、システム構築に要するコストの増大化を招くことになる。
【0007】
一般的に、ストリームデータの配信システムは、サービス事業者(インターネットサービスプロバイダ:ISPなど)が管理するサーバにより実現されている。従って、サービス事業者側において、コスト面からサーバの負荷容量を増強できない場合、ストリームデータ配信に対する需要の増大化に対応できず、ブロードバンド化により増強されたインターネットの帯域を十分に活用できない状況になる。
【0008】
このような問題点を解消するために、ストリームデータを分散配信(配送)する各種の技術が開発されている。これらの先行技術により、ストリームデータの送信(配信)を行なうサーバの負荷を軽減することが可能となる。しかしながら、いずれの先行技術も基本的には、分散配信システムを事業者が管理するサーバにより中央制御する方式である。このため、ストリームデータの送信に関するサーバの負荷は軽減できても、一方で、分散配信システムを構成するためのトポロジ(ノード間の接続関係)の制御などに関するサーバの負荷が増大するという問題がある。
【0009】
さらに、分散配信システムを中央制御する方式は、サービス事業者が管理するサーバによりストリームデータ配信を行なう事業者向けのアプローチである。換言すれば、ユーザ間で個人的情報を交換するプライベートの分野において、サービス事業者が管理するサーバを要することなく、いわば自律的又は個人的なストリームデータ配信を実現する分散配信システムに関する技術は開発されていない。
【0010】
そこで、本発明の目的は、インターネットなどのネットワーク環境において、特にユーザ端末間での自律的又は個人的なストリームデータ配信を実現できるストリームデータ分散配信技術を提供することにある。
【0011】
【課題を解決するための手段】
本発明の観点は、インターネットなどのネットワーク環境において、各ユーザ端末(ノード)間でストリームデータの送受信を行なうストリームデータ分散配信システムを動的に構築するための方法に関する。本方法の特徴は、各ユーザ端末のネットワーク接続関係を認識するためのトポロジ情報を、各ノード(ユーザ端末)が分散管理する構成にある。換言すれば、各ノードが自律的に、トポロジ情報を記憶し、更新し、提供するなどの管理を行なう機能を備えている。
【0012】
本発明の観点によるストリームデータ分散配信方法は、複数のユーザ端末が相互接続して構築されるネットワークにおいて、各ユーザ端末間で、上流ノードとしてのユーザ端末がストリームデータを送信し、下流ノードとしてのユーザ端末がストリームデータを受信するストリームデータ分散配信機能を実現する方法であって、前記各ユーザ端末は、下流ノードとして接続先の上流ノードを認識する情報を含み、上流ノードと下流ノードとの接続関係を認識するためのトポロジ情報を記憶する手段、当該トポロジ情報を各ユーザ端末間で交換する手段、及び前記ストリームデータの送受信を行なう手段を有し、下流ノードとして動作するユーザ端末は、上流ノードに相当するユーザ端末に接続を要求するステップと、前記トポロジ情報を受信するステップと、受信した前記トポロジ情報から、接続を要求する上流ノードに相当するユーザ端末を選択するステップとを有する手順を実行し、上流ノードとして動作するユーザ端末は、記憶しているトポロジ情報に対して、下流ノードに相当するユーザ端末との接続に従って更新し、かつ上位の上流ノードに相当するユーザ端末から送信されたトポロジ情報を併合するステップと、下流ノードとして接続された全てのユーザ端末に対して、前記トポロジ情報を送信するステップとを有する手順を実行する構成である
【0013】
本発明の観点によるストリームデータ分散配信方法であれば、サービス事業者が管理するストリームデータ配信用サーバや、分散配送系制御サーバなどを要することなく、例えばインターネットに接続されたユーザ端末間で、ストリームデータの送信、受信または中継を行なうことができる。
【0014】
各ノードは、トポロジ情報により認識した上流ノードに接続し、当該上流ノードから送信されるストリームデータを受信できる。また、トポロジ情報により認識した下流ノードに対してストリームデータを送信できる。この場合、上流ノードとして機能する自ノードは、複数の下流ノードに接続し、ストリームデータを同時並行的に送信することができる。また、上流ノードからストリームデータを受信した下流ノードは、他の下流ノードからの接続要求に応じて、上流ノードとして機能し、当該下流ノードに対して受信したストリームデータを送信(要するに中継)することができる。従って、サービス事業者が運営する高性能のストリームデータ配信用サーバを要することなく、インターネットに接続された各ユーザ端末間で、ストリームデータの分散配信を実現することができる。但し、一般的には、各ユーザ端末は、ISPや通信事業者などを介して、インターネットへの接続を行なうことになる。
【0015】
本発明のストリームデータ分散配信方法を利用すれば、一般ユーザが個人的な撮影映像を、インターネットに接続したパーソナルコンピュータなどを利用して、関係者のみに配信するようなパーソナル放送とも言えるサービスが可能となる。また、ユーザまたは事業者は、多数の視聴者に向けてライブやコンサートなどの中継放送を行なういわゆるインターネット放送を実現できる。この場合、インターネット放送事業者は、商業用のインターネット・ストリームデータ配信サービスにおける配信サーバの負荷を軽減させることができる。即ち、インターネット放送事業者が管理するサーバから、少数の各ユーザ端末にストリームデータを配信し、当該各ユーザ端末から他の各ユーザ端末に対して当該ストリームデータを配信することができる。これにより、インターネット放送事業者が管理するサーバの負荷を、直接的にストリームデータを配信する先のユーザ端末数に応じて軽減することができる。
【0016】
【発明の実施の形態】
以下図面を参照して、本発明の実施の形態を説明する。
【0017】
(システムの基本的構成)
図1は、本実施形態に関するストリームデータ分散配信システムの概念を示す図である。
【0018】
本システムは、特にブロードバンドのインターネット等のような常時接続の高速ネットワーク環境を想定し、当該ネットワークに接続された複数のノード10によりストリームデータを分散配信する構成である。ここで、ストリームデータとは、動画(映像)や音声等の連続的ディジタルデータを意味する。また、ノード10とは、一般的には、ネットワークに接続されたユーザ端末であるが、サーバやルータなどのネットワーク機器であってもよい。ユーザ端末としては、具体的には、パーソナルコンピュータ、無線通信機能を有する携帯型情報端末(PDAや、ノート型パーソナルコンピュータなどを意味する)、あるいは携帯電話(PHSも含む)等のディジタル情報機器(デバイス)を意味する。また、ユーザ端末としては、前記のデバイス単体だけでなく、LANもしくは無線LANにより、複数のデバイスを接続して構成されるシステムを意味する場合もある。
【0019】
本システムでは、あるノード10(A)から送信されたストリームデータを受信したノード10(B)は、ストリームデータを復号して再生(視聴)すると共に、他のノード10に中継する。この場合、ノード10(B)は、データ処理能力及びネットワーク接続帯域の許容範囲内で、複数のノード10に対してストリームデータを中継する。
【0020】
要するに、本システムは、上流ノードから下流ノードへストリームデータの中継を実行することにより、高性能の配信用サーバを要することなく、多数のユーザ端末に対してストリームデータ配信を行なうストリームデータ分散配信機能を実現する。ここで、上流ノードとは、自ノードに対して上流であり、ストリームデータの送信元ノードまたは中継ノードである。また、下流ノードとは、自ノードに対してストリームデータの送信先ノードである。下流ノードは、ストリームデータを受信する受信ノード、または更に下流ノードに対して送信する中継ノードでもある。
【0021】
図2は、本システムの具体的構成の一例を示すブロック図である。
【0022】
本システムの具体的想定としては、多数のユーザ端末であるノード10がインターネット20に接続されて構築されたネットワークにおいて、ストリームデータ分散配信系に参加した各ユーザ端末に対してストリームデータが配信される構成である。各ノード10は、例えばADSL伝送方式やCATVネットワークを使用して、常時接続型の高速回線によりインターネットに接続される環境を想定している。
【0023】
あるノード10は、例えばパーソナルコンピュータ(PC)11と、ブロードバンド・ネットワーク接続インターフェース(BBNID)12とを有するユーザ端末である。BBNID(Broad-Band Network Interface Device)12は、具体的にはADSLモデムまたはケーブルモデム(CATVインターネット用モデム)等と、ルータ機能とを一体化したネットワーク機器である。これらのノード10は、インターネット20を介して受信したストリームデータを、例えばPC11のディスプレイ上に再生し、かつ他の下流ノード10へ中継する。
【0024】
また、あるノード10は、例えばPC11とディジタルビデオカメラ(DVC)13とを有する。これらのノード10は上流ノードとして、DVC13により撮影した映像(音声を含む)からなるストリームデータを、PC11にセットされたソフトウェア(同実施形態のメイン構成要素)により送信するユーザ端末である。
【0025】
(ノードの構成)
次に、図3を参照して、同実施形態のユーザ端末であるノード10の構成を説明する。
【0026】
同実施形態のノード10は、例えばパーソナルコンピュータと、当該コンピュータにセットされるソフトウェアと、各種デバイスとから構成される。図3は、同実施形態のメイン構成要素であり、PC11内で稼動する当該ソフトウェア構成を示すブロック図である。
【0027】
ストリームデータ分散配信システムを構成する各ノード10は、全て同一のソフトウェア構成を有し、ストリームデータの送信、受信、中継、再生の各機能を実現する。以下、ソフトウェア構成の各要素について具体的に説明する。なお、同実施形態のソフトウェア構成は、特定のOS(operating system)には依存しない設計である。
【0028】
本ソフトウェア構成は、トポロジエンジン30と、ストリームエンジン31と、ストリームスイッチ部32と、ノード全体の操作環境を司るGUI(graphical user interface)33と、ストリーム再生部34とからなる。
【0029】
トポロジエンジン30は、概略的にはメッセージ(制御情報)を交換することにより、各ノード10間のネットワーク接続関係(トポロジ:topology)を構成する機能を実現する。具体的には、トポロジエンジン30は、各ノード10間をTCP/IP(transmission control protocol/internet protocol)で接続して、各種のメッセージを送受信する。さらに、トポロジエンジン30は、直接あるいは間接的に接続された近傍のノードの存在を、メッセージの交換を通じて認識する。トポロジエンジン30は、当該近傍ノードの存在情報及びストリームデータの受信状態から代替トポロジを求めて、当該トポロジに従って一度構成した各ノード10間の接続関係を変更する。
【0030】
ストリームエンジン31は、ノード10間でのストリームデータの送信、受信、中継の各機能を実現するソフトウェアである。ストリームエンジン31は、トポロジエンジン30から受け取ったトポロジ情報(後述するトポロジ情報テーブル)に基づいて、隣接ノードである下流ノード(単数又は複数)に向けてストリームデータを送信する。また、隣接ノードである上流ノード(単数又は複数)からストリームデータを受信する。
【0031】
ここで、隣接ノードとは、自ノードと直接的に接続している上流又は下流のノードを意味する。また、近傍ノードとは、自ノードと間接的に接続している上流又は下流のノードを意味する。トポロジ情報(トポロジ情報テーブル)は、各ノード間の論理的な接続関係を示す情報(上流/下流及び隣接/近傍を識別する情報)、及び当該接続関係が形成された隣接または近傍のノードを特定する情報(ネットワークアドレスなど)を含む(図15を参照)。
【0032】
ストリームエンジン31は、ストリームデータ送受信用のTCP/IP接続を確立し、各ノード間でストリームデータの送受信を実行する。ストリームエンジン31は、ストリームデータのデータ形式(符号化方式)に依存しない汎用的配送機能を有し、例えばMPEG規格等の各種のデータ形式に適用できる構成である。
【0033】
ストリームスイッチ部32は、ストリームエンジン31と他の機能、デバイス、ファイルとの連携機能を実現するためのソフトウェアである。ストリームスイッチ部32は主機能として、ストリーム再生部34を起動し、ストリームエンジン31から取り出したストリームデータを渡す。ストリーム再生部34は、ストリームデータから出力用の映像や音声を復号化して、再生するためのソフトウェアである。更に、ストリームスイッチ部32は、ローカル装置である例えばデジタルビデオカメラ(DVC)13や、ローカルファイル装置36からストリームデータを取り出し、ストリームエンジン31に渡すことにより他のノードに送信する機能を実現する。
【0034】
GUI33は、トポロジエンジン30、ストリームエンジン31、ストリームデータスイッチ部32のそれぞれと、ユーザとのインターフェースを提供する。具体的には、GUI33は、ディスプレイの画面上に、隣接または近傍ノード間のトポロジ(接続関係)を可視的に表示したり、ストリームエンジン31の通信データ量を可視的に表示する。また、GUI33は、ユーザからのコマンド入力に応じて、他ノードへの明示的接続要求や、自ノードの接続鍵の設定を行なう。接続鍵とは、トポロジエンジン30に含まれるノード間の接続に関する認証機能で使用される鍵データである。
【0035】
ここで、接続鍵(CK)と公開鍵(PK)とを使用する認証機能を、具体的に説明する。あるノードが配信元(配信サーバの役割)となる場合、後述するように、GUI33の公開鍵取得部336が接続鍵発行サーバ71から公開鍵(PK)を取得し、これをトポロジエンジン30の接続認証部307が受け取り記憶する(図4及び図7を参照)。接続認証部307は、接続要求受理部306からの認証要求(接続鍵CKを含む)に応じて、当該公開鍵(PK)を使用して接続鍵(CK)を復号して認証する。
【0036】
これに対して、視聴参加するノードは、GUI33の接続鍵取得部334が接続鍵発行サーバ71から接続鍵(CK)を取得し、これをトポロジエンジン30の接続認証部307が受け取り記憶する。また、上流ノードへの接続要求の際には、トポロジエンジン30の接続要求部305は、接続認証部307から接続鍵(CK)を受け取り、上流ノードへ接続要求を実行する。
【0037】
更に、図4から図7を参照して、ノード10の各ソフトウェア構成を具体的に説明する。
【0038】
(トポロジエンジン)
トポロジエンジン30は、図4に示すように、トポロジ管理部300、トポロジテーブル301、負荷状態監視部302、制御データ通信部303,304、接続要求部305、接続要求受理部306、及び接続認証部307の各機能要素部を有する。
【0039】
トポロジ管理部300は、直接接続している上流ノードから受信したトポロジ情報(TI)に基づいて、隣接ノード群又は近傍ノード群の存在と、それらノード間の接続関係(トポロジ)を認識する。また、トポロジ管理部300は、当該トポロジ情報(TI)のテーブル形式にしたトポロジ情報テーブルをトポロジテーブル301に記憶する(以下TIを情報テーブルと表記する場合がある)。トポロジ管理部300は、ノード間のトポロジの変化に応じて、トポロジテーブル301に記憶した情報テーブル(TI)を更新する。
【0040】
トポロジ管理部300は、直接接続している隣接ノード、即ち上流ノード(通常では単数)及び下流ノード(単数又は複数)のノード識別子(ネットワークアドレス)をストリームエンジン31に渡す。ストリームエンジン31は、当該隣接ノードとの間にストリームデータ送受信用のTCP/IP接続を確立する。また、トポロジ管理部300は、トポロジテーブル301に記憶された情報テーブル(TI)をGUI33に渡す。GUI33は、当該情報テーブル(TI)に基づいて、ノード間のトポロジを可視化して画面上に表示する(図7を参照)。
【0041】
ここで、トポロジ情報テーブル(TI)について、図14及び図15を参照して具体的に説明する。
【0042】
図14は、各ノード10がネットワーク上で接続されている接続関係(トポロジ)の一例を示す図である。各ノード10は、例えばネットワークアドレスに相当する識別子(node0〜node5)により特定される。各ノード10は、基本的には、自ノードに対して上流ノードからトポロジ情報(TI)を受け取り、トポロジテーブル301として登録する。そして、各ノード10は、下流ノードからの接続要求に応じて、当該下流ノードとの接続関係を追加したトポロジ情報(TI)を下流ノードに提供する。
【0043】
ここで、仮に、node0の上流ノード10は、下流ノード(node1,4)との接続関係を記録したトポロジ情報(TI−0)を、当該下流ノード(node1,4)に提供する。このトポロジ情報(TI−0)は、図15(A)に示すように、接続関係にあるノード識別子(node0,1,4)と、隣接ノード(直接的に接続したノード)である上流ノードの識別子(node0のみ)とが対応付けされた情報テーブルである。なお、下流ノードの各識別子(node1,4)に対しては、下流ノードであることを示すフラグ情報を付加してもよい。即ち、自ノード(node0)は、当該フラグ情報により、トポロジ情報(TI−0)に登録された識別子(node1,4)を隣接ノードである下流ノードとして認識できる。
【0044】
下流ノード(node1)は、図14に示すように、自ノードが上流ノードとして下流ノード(node2,3)との接続関係を確立していると想定する。この場合、下流ノード(node1)は、上流ノード(node0)から提供されたトポロジ情報(TI−0)に、当該接続関係を追加したトポロジ情報(TI−1)を生成して、下流ノード(node2,3)に提供する(図15(B)を参照)。このトポロジ情報(TI−1)においても、同様に、下流ノードの各識別子(node2,3)に対しては、下流ノードであることを示すフラグ情報を付加してもよい。
【0045】
ここで、下流ノード(node2)は、提供されたトポロジ情報(TI−1)から、接続関係(1)〜(3)を認識することができる。即ち、接続関係(1)として、自ノード以外に、上流ノード(node1)に対する隣接ノードとして、下流ノード(node3)の存在を認識できる。接続関係(2)として、自ノードの上流ノード(node1)に対して、更に上流となるノード(node0)の存在を認識できる。接続関係(3)として、上流ノード(node0)の下流ノード(node4)の存在を認識できる。これら間接的に接続されたノードnode0、node3,node4は、自ノード(node2)にとっての近傍ノードである。
【0046】
同様に、下流ノード(node3)は、提供されたトポロジ情報(TI−1)から、接続関係(1)〜(3)を認識することができる。即ち、接続関係(1)として、自ノード以外に、上流ノード(node1)に対する隣接ノードとして、下流ノード(node2)の存在を認識できる。接続関係(2)として、自ノードの上流ノード(node1)に対して、更に上流となるノード(node0)の存在を認識できる。接続関係(3)として、上流ノード(node0)の下流ノード(node4)の存在を認識できる。
【0047】
一方、下流ノード(node4)は、図14に示すように、自ノードが上流ノードとして下流ノード(node5)との接続関係を確立していると想定する。この場合、下流ノード(node4)は、提供されたトポロジ情報(TI−0)に、当該接続関係を追加したトポロジ情報(TI−4)を生成して、下流ノード(node5)に提供する(図15(C)を参照)。このトポロジ情報(TI−4)においても、同様に、下流ノードの識別子(node5)に対しては、下流ノードであることを示すフラグ情報を付加してもよい。
【0048】
以上要するに、各ノードは、基本的に上流から下流へ提供されるトポロジ情報(TI)をトポロジテーブル301として管理(登録、更新、提供等)することにより、隣接ノード及び近傍ノードの存在を認識することができる。隣接ノードとは、前述したように、自ノードと直接的に接続する上流ノード又は下流ノードである。近傍ノードとは、自ノードと間接的に接続されたノードである(必ずしも自ノードより上流又は下流の関係とは限らない)。
【0049】
なお、トポロジ情報(TI)は、下流に行くほど情報量が増大することになる。このため、予め情報量の上限値を設定し、当該上限値を超えた場合には、トポロジ管理部300は、自ノードから最も遠い関係にあるノードの情報(識別子等)を削除するような構成が望ましい。
【0050】
負荷状態監視部302は、図4に示すように、後述するストリームエンジン31のストリームデータバッファ(FIFO式バッファ)の格納状態(SB)を監視し、これによりストリームエンジン31の負荷状態を判断する。負荷状態監視部302は、ストリームエンジン31の負荷状態が許容範囲を超える場合には、トポロジ管理部300に対して下流ノードの切断を指示する。なお、後述するように、ストリームエンジン31のストリームデータバッファの格納状態(SB)は、GUI33に対しても通知される。
【0051】
制御データ通信部303は、接続要求部305からの指示に応じて、上流ノード10Aとの制御データ通信チャネルを確立する。上流ノード10Aは、自ノード10からはストリームデータの送信元ノードに相当する。制御データ通信部303は、トポロジ情報(TI)を上流ノード10Aから受信する。また、制御データ通信部303は、上流ノード10Aを別のノードに切替える場合に、制御データ通信チャネルの切断を行なう。
【0052】
制御データ通信部304は、接続要求受理部306からの指示に応じて、下流ノード10Bとの制御データ通信チャネルを確立する。下流ノード10Bは、自ノードから送信するストリームデータの送信先ノードに相当する。制御データ通信部304は、トポロジ情報(TI)を下流ノード10Bへ送信する。また、制御データ通信部304は、下流ノード10Bが上流ノードを自ノードから別ノードへ切替えるときに、制御データ通信チャネルの切断を行なう。
【0053】
接続要求部305は、GUI33からの上流ノードの指定(CR)に応じて、上流ノード10Aに対する接続要求を行なう。さらに、接続要求部305は、接続要求を送信した上流ノード10Aからの接続受理通知に応じて、制御データ通信部303に対して接続を指示する。このとき、トポロジ管理部300に対して、制御データ通信チャネルが確立された上流ノード10Aのネットワークアドレスの登録を指示する。接続要求部305は、接続要求に伴なって、接続対象の上流ノード10Aとの間で接続認証処理に必要な接続鍵データ(CK)と公開鍵データ(PK)の交換を行なう。
【0054】
接続要求受理部306は、下流ノード10Bからの接続要求に応じて、接続認証部307により認証された場合に接続受理を行なう。接続要求受理部306は、接続受理に応じて制御データ通信部304に対して接続を指示すると共に、トポロジ管理部300に対して、制御データ通信チャネルが確立された下流ノード10Bのネットワークアドレスの登録を指示する。接続要求受理部306は、接続受理に伴なって、接続対象の下流ノード10Bとの間で接続認証処理に必要な接続鍵データ(CK)と公開鍵データ(PK)の交換を行なう。なお、接続認証処理手順については、後述する。
【0055】
接続認証部307は、接続要求部305及び接続受理部306による他のノード(上流ノードと下流ノード)との接続に必要な接続認証処理を実行する。接続認証部307は、公開鍵暗号方式を利用した認証処理を実行し、認証チケットに相当する接続鍵データ(CK)と公開鍵データ(PK)をGUI33から受け取る。また、接続認証部307は、接続要求部305及び接続要求受理部306のそれぞれとの間で、接続鍵データ(CK)と公開鍵データ(PK)の交換を実行する。
【0056】
ここで、前述したように、あるノードが配信元(配信サーバの役割)となる場合、GUI33の公開鍵取得部336が接続鍵発行サーバ71から公開鍵データ(PK)を取得し、これをトポロジエンジン30の接続認証部307が受け取り記憶する。接続認証部307は、接続要求受理部306からの認証要求(接続鍵データCKを含む)に応じて、当該公開鍵データ(PK)を使用して接続鍵データ(CK)を復号して認証する。また、視聴参加するノードは、GUI33の接続鍵取得部334が接続鍵発行サーバ71から接続鍵データ(CK)を取得し、これをトポロジエンジン30の接続認証部307が受け取り記憶する。また、上流ノードへの接続要求の際には、トポロジエンジン30の接続要求部305は、接続認証部307から接続鍵データ(CK)を受け取り、上流ノードへ接続要求を実行する。
【0057】
(ストリームエンジン)
ストリームエンジン31は、図5に示すように、ストリームデータ送信部311、ストリームデータ受信部312、ストリームデータバッファ313、ストリームデータバッファ状態監視部314、及びストリームデータ通信接続管理部315の各機能要素部を有する。
【0058】
ストリームデータ送信部311は、ストリームデータバッファ313に格納されたストリームデータを下流ノードに送信する(中継する)。このとき、ストリームデータ送信部311は、ストリームデータ通信接続管理部315から接続許可の指示がなされた下流ノードに対してストリームデータを送信する。
【0059】
ストリームデータバッファ313は、ストリームデータ受信部312で受信された上流ノードからのストリームデータ、または、ストリームスイッチ部32から受け取ったストリームデータを一時的に保存するFIFO式バッファである。ストリームデータバッファ状態監視部314は、ストリームデータバッファ313の格納状態(SB)を常に監視し、トポロジエンジン30及びGUI33に通知する。ここで、格納状態(SB)とは、バッファ313のサイズに対してストリームデータが格納されているデータ量を意味する。
【0060】
ストリームデータ受信部312は、ストリームデータ通信接続管理部315から指定された上流ノードとの間にストリームデータ通信チャネルを確立する。そして、当該上流ノードから送信されたストリームデータを受信して、ストリームデータバッファ313に書き込む。ストリームデータ通信接続管理部315は、ストリームデータ通信チャネルによる接続関係を確立すべき隣接ノードのリストをトポロジエンジン30から受け付ける。
【0061】
(ストリームスイッチ部)
ストリームデータスイッチ部32は、図6に示すように、GUI33からの指定(SW)に応じて、ストリームデータの入出力を切替える。即ち、ストリームスイッチ部32は、ストリームエンジン31から受け取ったストリームデータを、ストリームデータ再生部34またはノードのローカルファイル装置60に転送する。また、ストリームスイッチ部32は、ローカル装置であるデジタルビデオカメラ(DVC)35や、エンコーダデバイス36からのストリームデータ又はローカルファイル装置60に格納しているストリームデータを読出して、ストリームエンジン31に転送する。
【0062】
(GUI)
GUI33は、図7に示すように、ストリームデータ中継制御部331、中継状態(品質)表示部332、トポロジ表示部333、接続鍵取得部334、上流ノード決定部335、及び公開鍵取得部336の各機能要素部を有する。GUI33は、表示装置70の表示画面上のアイコンに対する操作に応じたコマンドを入力したり、当該表示画面上に各種の表示情報を表示する。
【0063】
ストリームデータ中継制御部331は、ユーザからのコマンド入力に応じて、ストリームデータ中継の停止又は再開の指示(SC)をストリームエンジン31に対して行なう。中継状態(品質)表示部332は、ストリームエンジン31からストリームデータバッファ313の格納状態(SB)を読取り、表示画面上に表示させる処理を実行する。
【0064】
トポロジ表示部333は、トポロジエンジン30からのトポロジ情報(TI)を受け取り、隣接ノード又は近傍ノードの接続関係を表示画面上に表示させる処理を実行する。接続鍵取得部334は、ユーザから入力された接続鍵データ(CK)、または後述する接続鍵発行サーバ71から発行された接続鍵データ(CK)をトポロジエンジン30に渡す。上流ノードへの接続要求の際には、トポロジエンジン30の接続要求部305は、接続認証部307から接続鍵データ(CK)を受け取り、上流ノードへ接続要求を実行する。
【0065】
GUI33の公開鍵取得部336は、あるノードが配信元(配信サーバの役割)となる場合、接続鍵発行サーバ71から公開鍵データ(PK)を取得し、トポロジエンジン30の接続認証部307に渡す。接続認証部307は、接続要求受理部306からの認証要求(接続鍵データCKを含む)に応じて、当該公開鍵データ(PK)を使用して接続鍵データ(CK)を復号して認証する。
【0066】
上流ノード決定部335は、ユーザから指定された上流ノード、または後述するノード仲介サーバ72から仲介された上流ノードのネットワークアドレスをトポロジエンジン30に渡す。
【0067】
(接続確立手順)
以下図8を参照して、同実施形態のノード間の接続処理の手順を説明する。
【0068】
ノード間の接続処理は、図8(A)に示す自ノードから見て下流ノードとの接続処理と、同図(B)に示す自ノードから見て上流ノードとの接続処理とに分けられる。要するに、自ノードは、相対的関係としての上流ノードまたは下流ノードとの接続処理を実行する。
【0069】
まず、上流ノードとの接続処理では、自ノードのトポロジエンジン30は、上流ノードに対して接続要求メッセージを送信する(ステップS1)。具体的には、図4に示す接続要求部305が、接続鍵データとIDデータとを含む接続要求メッセージを送信する。IDデータは、例えばストリームデータ配信を行なう特定のネットワークを構築する目的のグループID、またはストリームデータのコンテンツ毎に設定されたコンテンツID等を含む。また、IDデータは、各ノードのハードウェアを識別するためのIDデータ(例えばネットワーク・インターフェースのMACアドレスや、マイクロプロセッサに埋め込まれたシリアル番号など)を含む。
【0070】
自ノードは、上流ノードから接続要求に対する回答(接続認証処理の結果)を受信するまで待機状態となる(ステップS2)。そして、上流ノードから接続許可のメッセージを受信すると、トポロジエンジン30は、当該上流ノードとの制御通信チャネルを確立し、当該上流ノードをトポロジテーブル301に登録する(ステップS4)。また、トポロジエンジン30は、上流ノードから受信した接続許可のメッセージに含まれる公開鍵データを記憶する。更に、トポロジエンジン30は、接続した上流ノードをストリームエンジン31に登録させる(ステップS5)。これにより、ストリームエンジン31は、当該上流ノードとストリームデータ通信チャネルを接続し、ストリームデータを受信可能な状態となる。
【0071】
一方、自ノードは、上流ノードから接続拒否のメッセージを受信すると、別の上流ノードとの接続を試みる処理に移行できる(ステップS3のNO,S6)。ここで、別の上流ノードとは、自ノードが要望するストリームデータの配信を受けるために必要な上流ノードであり、ストリームデータ分散配信ネットワークを構成する同一グループに所属するノードである(後述する)。
【0072】
次に、下流ノードとの接続処理、即ち、自ノードが相対的に上流ノードの場合の接続処理を、図8(A)に示すフローチャートを参照して説明する。
【0073】
自ノードは、下流ノードから接続鍵データを含む接続要求メッセージを受信すると、接続認証処理を実行する(ステップS11,S12)。トポロジエンジン30の接続認証部307は、接続鍵を予め取得してある公開鍵データを用いて復号することにより接続認証処理を実行し、認証できない場合には接続拒否メッセージを下流ノードに返信する(ステップS13のNO,S17)。
【0074】
一方、トポロジエンジン30は、認証成功の場合には、既存の下流ノードへのストリームデータ中継の品質が規定値以上であるか否かを判定し、判定結果が規定値以下の場合には接続拒否メッセージを下流ノードに返信する(ステップS114のNO,S17)。即ち、新たな下流ノードを接続した結果、中継品質が規定値以下になる場合には、自ノードは、下流ノードを増やすことを防ぐため接続を拒否する。
【0075】
トポロジエンジン30は、最終的に接続を許可する場合には、公開鍵データを含む接続許可メッセージを下流ノードに返信する(ステップS14のYES,S15)。更に、トポロジエンジン30は、接続を許可した下流ノードをトポロジテーブル301に登録すると共に、当該下流ノードをストリームエンジン31に登録させる(ステップS16)。これにより、ストリームエンジン31は、当該下流ノードとストリームデータ通信チャネルを接続し、ストリームデータを送信可能な状態となる。
【0076】
以上のような接続処理により、上流ノード及び下流ノードの各ノード間の接続が確立されて、図1に示すように、ストリームデータ分散配信系のネットワークを構成することができる。
【0077】
(上流ノード取得手順)
以下図9を参照して、自ノードがストリームデータ配信を受けるために、即ちストリームデータ分散配信系に参加するために、新規に上流ノードを取得するための手順を説明する。ここで、同図(A),(C)に示すステップS21からステップS26は、各ノード側での処理手順を示す。また、同図(B)に示すステップS31からステップS37は、ノード仲介サーバ側での処理手順を示す。
【0078】
ここでは、ノード仲介サーバ(図7のサーバ72)の存在を想定し、このノード仲介サーバから上流ノードの紹介を受ける構成を説明する。
【0079】
ノード仲介サーバは、グループIDに対応する、即ち一つのストリームデータ分散配信系に属する複数のノードをノードデータベース720に登録している。当然ながら、ノードデータベース720には、複数のグループID(ストリームデータ分散配信系)についてそれぞれに属すノードを登録することができる。
【0080】
まず、自ノードは、上流ノード紹介要求メッセージ(グループIDを含む)を、ノード仲介サーバに送信する(ステップS21)。ノード仲介サーバは、当該メッセージを受信すると、ノードデータベース720から当該ストリームデータ分散配信系に属すノードを検索する(ステップS31,S32)。そして、ノード仲介サーバは、検索したノードのネットワークアドレスを含む応答メッセージを返信する(ステップS33)。
【0081】
自ノードは、応答メッセージから紹介された上流ノードのネットワークアドレスを取得し、当該上流ノードとの接続処理に移行する(ステップS22,S23)。ステップS23は、図8のステップS1から開始される処理ステップである。この接続処理では、前述したように、紹介された上流ノードは、接続認証処理を実行して、最終的に接続許可又は接続拒否の判定を実行する。自ノードは、上流ノードとの接続が完了しない場合には、再度、ノード仲介サーバに対して紹介要求メッセージを送信する(ステップS24のNO,S21)。
【0082】
上流ノードとの接続が完了すると、ノード仲介サーバに接続完了メッセージを送信する(ステップS24のYES,S25)。ノード仲介サーバは、当該メッセージを受信すると、ノードデータベース720に当該自ノードを登録する(ステップS34,S35)。一方で、ノード仲介サーバは、自ノードからストリームデータ分散配信系ネットワークからの離脱を示すノード離脱メッセージを受信すると、ノードデータベース720から当該自ノードの登録を削除する(ステップSS26,S36,S37)。
【0083】
以上のような処理により、ストリームデータ分散配信系のネットワークに参加を希望するユーザは、ストリームデータを中継してくれる上流ノードに接続することができる。なお、ノード仲介サーバを介在させることなく、別の方法で上流ノードのネットワークアドレスを取得できれば、当該上流ノードへの接続は可能である。
【0084】
(トポロジ変更手順)
以下図10を参照して、各ノード間を接続して構成されたストリームデータ分散配信系ネットワークの接続関係であるトポロジを変更する場合の手順を説明する。
【0085】
ここでは、図10(A)に示すように、相対的に下流側のノード(1)、ノード(2)、及び上流側のノード(3)が接続された状態のトポロジを想定する。ノード(2)は、同図(B)に示すように、トポロジ変更処理として、ノード(1)に対する上流ノードの変更処理を実行する。即ち、ノード(2)は、代替上流ノード(3)の指定を含む上流ノード変更メッセージを、下流ノード(1)に送信する(ステップS41)。
【0086】
下流ノード(1)は、同図(C)に示すように、上流ノード(2)から上流ノード変更メッセージを受信すると、指定された代替上流ノード(3)に対する接続処理を実行する(ステップS45,S46)。接続処理では、下流ノード(1)は、代替上流ノード(3)に対して接続要求メッセージを送信する。代替上流ノード(3)は、同図(D)に示すように、受信した接続要求メッセージに基づいて、下流ノード(1)との接続処理を実行する(ステップS50)。そして、代替上流ノード(3)は、接続許可メッセージまたは接続拒否メッセージを下流ノード(1)に返信する。なお、ステップS46,S50は、図8のステップS1,S11から開始される処理ステップに対応する。
【0087】
下流ノード(1)は、代替上流ノード(3)から接続許可メッセージを受信した場合に、上流変更完了の通知を上流ノード(2)に送信する(ステップS47)。下流ノード(1)は、上流ノード(2)との通信チャネル(制御データ通信チャネルとストリームデータ通信チャネル)を切断し、トポロジテーブル301から上流ノード(2)の登録を削除する(ステップS48,S49)。
【0088】
一方、上流ノード(2)は、上流変更完了の通知を受信すると、下流ノード(1)との通信チャネル(制御データ通信チャネルとストリームデータ通信チャネル)を切断し、トポロジテーブル301から下流ノード(2)の登録を削除する(ステップS42,S43,S44)。
【0089】
以上のような上流変更処理により、上流ノードと下流ノードとの接続関係が変更されて、結果として各ノード間の接続関係であるトポロジを変更できる。このトポロジ変更機能は、例えばノード(2)がネットワークから離脱したり、新たにノード(3)が参加するような場合に有効である。即ち、下流ノード(1)は、各ノードの状況に応じて動的かつ自律的に上流ノードを変更できるため、ストリームデータを停止することなく受信することができる。
【0090】
(接続切断手順)
以下図11を参照して、同実施形態のノード間の接続切断処理の手順を説明する。ここでは、下流ノードから上流ノードに対する接続を切断する場合の手順を説明する。逆の場合も、基本的には同様の手順となる。
【0091】
まず、下流ノードは、同図(A)に示すように、接続されている上流ノードに対して切断メッセージを送信する(ステップS61)。上流ノードは、同図(B)に示すように、切断メッセージを受信すると、下流ノードに対して切断受理の通知を送信する(ステップS66,S67)。
【0092】
下流ノードは、上流ノードから切断受理の通知を受信すると、当該上流ノードとの通信チャネル(制御データ通信チャネルとストリームデータ通信チャネル)を切断する(ステップS62,S63)。さらに、下流ノードは、トポロジテーブル301から当該上流ノードの登録を削除する(ステップS64)。
【0093】
一方、上流ノードは、下流ノードとの通信チャネル(制御データ通信チャネルとストリームデータ通信チャネル)を切断する(ステップS68)。さらに、上流ノードは、トポロジテーブル301から下流ノードの登録を削除する(ステップS69)。
【0094】
以上のような接続切断処理により、各ノードは、任意のタイミングで接続関係にあるノードとの接続を切断できる。この接続切断処理により、各ノード間のトポロジが変更となる。
【0095】
(下流ノードの処理手順)
図12は、下流ノード側の処理手順を整理して説明するためのフローチャートである。
【0096】
まず、ユーザがストリームデータ分散配信系ネットワークに参加する場合には、ユーザ端末が下流ノードとして初期化処理を実行することになる(ステップS70)。具体的には、前述したように、ノード仲介サーバから上流ノードの紹介を受ける(ステップS80)。当該下流ノードは、紹介された上流ノードに対する接続要求を実行する(ステップS81)。上流ノードから接続許可通知を受信した場合には、上流ノードとの接続が完了となる(ステップS82のYES)。これにより、下流ノードは、紹介された上流ノードからストリームデータを受信することができる。
【0097】
次に、接続されている上流ノードから上流変更メッセージを受信すると(ステップS71)、下流ノードは、当該メッセージに含まれる代替上流ノードに対して、接続要求を行なう(ステップS81)。この接続要求に対して、代替上流ノードから接続許可通知を受信した場合には、上流ノードとの接続が完了となる(ステップS82のYES)。ここで、下流ノードは、紹介された上流ノードまたは代替上流ノードから接続拒否通知を受信した場合あるいは何ら応答が得られない場合には、ノード仲介サーバから新たな上流ノードの紹介を受ける(ステップS82のNO(A),S80)。
【0098】
一方、下流ノードは、接続している上流ノードとの通信途絶(通信チャネルの切断も含む)を検出した場合には(ステップS72)、トポロジテーブル301から別の上流ノードを選択する(ステップS83)。下流ノードは、選択した上流ノードに対する接続要求を実行する(ステップS81)。上流ノードから接続許可通知を受信した場合には、上流ノードとの接続が完了となる(ステップS82のYES)。
【0099】
選択した上流ノードから接続拒否通知を受信した場合には、下流ノードは、トポロジテーブル301から全ての上流ノードの候補について、選択及び接続要求を実行する(ステップS82のNO(B),S84のNO)。全ての上流ノードの候補から接続拒否通知を受信した場合には、下流ノードは、改めて、ノード仲介サーバから新たな上流ノードの紹介を受ける(ステップS84のYES,S80)。
【0100】
また、下流ノードは、接続している上流ノードからのストリームデータ中継の品質低下を検出した場合には(ステップS73)、当該上流ノードとの接続を切断し、トポロジテーブル301から別の上流ノードを選択する処理に移行する(ステップS85,S83)。以後の処理については、前記の上流ノードとの通信途絶の場合と同様である。
【0101】
(トポロジ情報の交換手順)
図13は、各ノード間でのトポロジ情報の交換手順を整理して説明するためのフローチャートである。
【0102】
各ノードは、前述したように、トポロジエンジン30において、トポロジ管理部300、トポロジテーブル301、及び制御データ通信部303,304により、トポロジ情報テーブル(TI)を交換する。
【0103】
ここでは、上流ノードから下流ノードに対して、トポロジ情報テーブル(TI)を送信する場合を想定する。上流ノードは、接続した下流ノードに対して、自ノードと隣接ノードまたは近傍ノードとの接続関係を示すトポロジ情報テーブルを送信する(ステップS90)。下流ノードは、上流ノードからトポロジ情報テーブルを受信すると、トポロジテーブル301に併合(追加)処理して格納する(ステップS91,S92)。
【0104】
以上のように同実施形態によれば、特にブロードバンドのインターネット等のネットワーク環境において、各ノードに設けられたトポロジエンジン30の機能により、各ノード間を接続して、上流ノードと下流ノードとから構成されるストリームデータ分散配信系ネットワークを形成することができる。具体的には、図1に示すように、例えば最上流のノード10(A)から送信するストリームデータを、近傍の下流ノード10(B)に配信する。当該下流ノード10(B)は、受信したストリームデータを復号して再生すると同時に、上流ノードとして、更に下流ノードに対して当該ストリームデータを中継する。同様にして、各下流ノードは、受信したストリームデータを復号再生すると同時に、上流ノードとして、更に下流ノードに対して中継する。但し、一般的には、各ノードは、ISP(インターネット接続サービスプロバイダ)や通信事業者などを介して、インターネットへの接続を行なうことになる。
【0105】
従って、ストリームデータ配信用のサーバが存在しなくても、クライアント(ユーザ端末)のみから構成されるストリームデータ配信系のネットワークを実現できる。このような分散ネットワーク形成機能を利用することにより、ストリームデータ配信用のサーバからストリームデータ配信を行なうネットワークの場合でも、当該サーバの配信処理に要する負荷の軽減を図ることができる。即ち、例えば放送事業者が運営するサーバから、各ユーザ端末にストリームデータを配信すると共に、当該各ユーザ端末から他の各ユーザ端末に対して当該ストリームデータを配信することができる。これにより、放送事業者が運営するサーバの負荷を、ストリームデータ配信先のユーザ端末数に依存せずに低く抑えることができる。
【0106】
また、いわゆる商業用ストリームデータ配信系のネットワークではなく、ユーザが個人的な撮影映像などを、インターネットに接続した関係者のみの各ノードに対して配信するためのプライベートネットワークを構築することができる。このようなプライベートネットワークを利用して、パーソナル放送とも言えるサービスが可能となる。
【0107】
なお、同実施形態では、ノード仲介サーバの存在を想定した場合について言及している。このノード仲介サーバは、ストリームデータ配信用のサーバ、即ち分散配信系の中央制御サーバとは全く異なるものであり、単に上流サーバとしての候補を紹介するだけの限定された機能しか備えていないサーバである。従って、当該サーバは、ネットワークを構成する全ノードを正確に認識するようなデータベースを必要とせず、ネットワークに参加しているノードの中で未知のノードが存在していても差し支えない。また、ユーザが、ノード仲介サーバからの紹介とは別の方法で、上流ノードを知っている場合には、当然ながら、ノード仲介サーバは不要である。要するに、同実施形態では、ノード仲介サーバの存在は必須要件ではなく、実際上のサービス効率の観点からは望ましい存在である。
【0108】
(同実施形態に適用可能なビジネスモデルまたは応用例)
同実施形態のストリームデータ分散配信系ネットワークを適用することにより、以下のようなビジネスモデルまたは応用例を実現できる。
【0109】
(1)例えば結婚式の披露宴などで、ユーザが個人的に撮影した映像を、ストリームデータとして各ユーザ(関係者のみ)に配信するパーソナル放送またはコミュニティ放送とも呼べるシステムを実現できる。この場合、ネットワークを構築する各ノードは、例えば公開鍵方式による接続認証機能により特定されるユーザ端末のみから構成される。
【0110】
(2)前記(1)の拡張系として、ビデオカメラを用意した複数のユーザが集まり、各ユーザ間で同時に送受信することにより、ビデオ・チャット・サービスを実現できる。
【0111】
(3)ビデオカメラを備えたノードを、例えば街頭など屋外の特定の場所や、ビル、コンサートホール等に設置し、事件やイベントが発生した場合に、当該ビデオカメラにより撮影した映像(音声付)を、予め契約し、接続鍵の配布を受けた各ノードに対して中継するロケーション・サービスとも呼べるビジネスモデルを実現できる。この場合、各ノードは、サービス事業会社と契約することにより、当該会社が運営するネットワークに接続して、中継サービスを受けられる。具体的には、いわゆるインターネット・コンサートライブ放送を容易に実現できる。
【0112】
(4)コンテンツの商用配信サービス系ネットワークにおいて、事業者が運営するサーバから各ユーザに対して、有料のコンテンツを配信する場合に、ユーザが中継ノードを提供することにより、サーバ側の配信負荷を軽減できる。この場合、中継ノードを提供したユーザに対して、当該コンテンツの視聴チケットに交換できるポイントを提供するようなインセンティブを与えることにより、同実施形態のシステムを有効に利用することができる。
【0113】
(5)ノード間の制御データ通信チャネルを利用して、下流ノードから上流ノードへの情報通信を含め、各ノード間をピア・ツー・ピア(peer-to-peer)通信で結ぶことによって、ストリーム配信と同時に様々なコミュニケーション・サービスを実現することができる。例えば、下流から上流へと情報を集約することにより、配信コンテンツの人気投票サービス、クイズやアンケートに対するリアルタイム・サービスが可能となる。この場合も、同時アクセスを処理する大規模なサーバが不要になることがメリットである。また、下流ノード同士でチャットなどのコミュニケーションをストリーム配信と同時に実現できる。コンサート放送を見ながら、視聴者同士がチャットし合うようなサービスを提供できる。
【0114】
【発明の効果】
以上詳述したように本発明によれば、インターネットなどのネットワーク環境において、特にユーザ端末間での自律的又は個人的なストリームデータ配信を実現できるストリームデータ分散配信技術を提供できる。具体的には、例えばブロードバンドのネットワーク環境を利用して、特別のストリームデータ配信用サーバを用意することなく、クライアント(端末ノード)間での動画・音声のストリームデータの分散配信を実現できる。
【図面の簡単な説明】
【図1】本発明の実施形態に関するストリームデータ分散配信システムの概念を示す図。
【図2】同実施形態に関するシステムの具体的構成の一例を示すブロック図。
【図3】同実施形態に関するノード(ユーザ端末)の構成を示すブロック図。
【図4】同ノードのトポロジエンジンの構成を示すブロック図。
【図5】同ノードのストリームエンジンの構成を示すブロック図。
【図6】同ノードのストリームデータスイッチ部の構成を示すブロック図。
【図7】同ノードのGUIの構成を示すブロック図。
【図8】同実施形態に関するノード間の接続確立処理の手順を説明するためのフローチャート。
【図9】同実施形態に関する上流ノード取得手順を説明するためのフローチャート。
【図10】同実施形態に関するトポロジ変更手順を説明するためのフローチャート。
【図11】同実施形態に関するノード間の接続切断処理の手順を説明するためのフローチャート。
【図12】同実施形態に関する下流ノード側の処理手順を説明するためのフローチャート。
【図13】同実施形態に関する各ノード間でのトポロジ情報の交換手順を説明するためのフローチャート。
【図14】同実施形態に関するトポロジ情報の内容を説明するための図。
【図15】同トポロジ情報の一例を示す図。
【符号の説明】
10…ノード
11…パーソナルコンピュータ(PC)
12…ルータ
13…ディジタルビデオカメラ(DVC)
20…インターネット
30…トポロジエンジン
31…ストリームエンジン
32…ストリームスイッチ部
33…GUI
34…ストリームデータ再生部
300…トポロジ管理部
301…ノードテーブル
302…負荷状態監視部
303…制御データ通信部
304…制御データ通信部
305…接続要求部
306…接続要求受理部
307…接続認証部
311…ストリームデータ送信部
312…ストリームデータ受信部
313…ストリームデータバッファ
314…ストリームデータバッファ状態監視部
315…ストリームデータ通信接続管理部
[0001]
BACKGROUND OF THE INVENTION
The present invention generally relates to a method for distributing and distributing stream data in a network environment, and more particularly to a technique for realizing a distributed distribution function of stream data between user terminals on the Internet.
[0002]
[Prior art]
In recent years, in the information and communication network environment represented by the Internet, it has become possible to easily transmit moving image (video) and audio content information (hereinafter sometimes referred to as stream data) by promoting broadbandization. It's getting on. Broadband network environments include, for example, network environments based on wireless communication systems (mobile communication systems) such as mobile phones, in addition to wired communication systems using ADSL (asymmetric digital subscriber line) transmission systems and CATV (cable television) networks. Is also included.
[0003]
By the way, as a user terminal connected to the Internet, a personal computer, various digital information devices (for example, a digital TV receiver), a mobile phone (including PHS), or a portable information terminal (PDA) having a wireless communication function. : It is also called personal digital assistant).
[0004]
By using these user terminals in a broadband network environment, it is possible to receive stream data and reproduce content information such as moving images and audio without causing the user to feel uncomfortable. Conventionally, text information and still images are mainly used for information services via the Internet and information exchange between individuals, and communication of stream data such as moving images and voices has been limited. Therefore, with the spread of broadband network environments, the demand for stream data distribution will increase not only in the business field such as the stream data distribution service business but also in the private field where personal information is exchanged between users. Is expected to.
[0005]
[Problems to be solved by the invention]
With the promotion of broadband in a network environment, an increase in bandwidth and a reduction in communication costs are being realized for Internet backbone systems and branch line systems connected to user terminals in each home.
[0006]
However, on the other hand, with an increase in demand for stream data distribution, an increase in load capacity (distribution capability) is required for a system for transmitting stream data. This requires a large capital investment especially for the server, which leads to an increase in the cost required for system construction.
[0007]
Generally, a stream data distribution system is realized by a server managed by a service provider (Internet service provider: ISP or the like). Therefore, if the service provider cannot increase the load capacity of the server due to cost reasons, it cannot respond to the increase in demand for stream data distribution and cannot fully utilize the Internet bandwidth increased by broadband. .
[0008]
In order to solve such problems, various techniques for distributing and distributing (distributing) stream data have been developed. With these prior arts, it is possible to reduce the load on the server that performs transmission (distribution) of stream data. However, any of the prior arts is basically a system in which a distributed distribution system is centrally controlled by a server managed by an operator. For this reason, although the load on the server related to the transmission of stream data can be reduced, there is a problem that the load on the server related to the control of the topology (connection relationship between nodes) for configuring the distributed distribution system increases. .
[0009]
Furthermore, the method of centrally controlling the distributed distribution system is an approach for a provider that performs stream data distribution using a server managed by a service provider. In other words, in a private field where personal information is exchanged between users, a technology relating to a distributed distribution system that realizes autonomous or personal stream data distribution without developing a server managed by a service provider is developed. It has not been.
[0010]
Accordingly, an object of the present invention is to provide a stream data distribution and delivery technique that can realize autonomous or personal stream data delivery between user terminals in a network environment such as the Internet.
[0011]
[Means for Solving the Problems]
An aspect of the present invention relates to a method for dynamically constructing a stream data distribution and delivery system that performs transmission and reception of stream data between user terminals (nodes) in a network environment such as the Internet. The feature of this method is that each node (user terminal) distributes and manages topology information for recognizing the network connection relationship of each user terminal. In other words, each node has a function of performing management such as autonomously storing, updating, and providing topology information.
[0012]
A stream data distribution and delivery method according to an aspect of the present invention Multiple user terminals In a network constructed by interconnecting User terminal As an upstream node User terminal Send stream data as downstream node User terminal A method for realizing a stream data distributed delivery function for receiving stream data, User terminal Is Contains information that identifies the upstream node to connect to as a downstream node, Topology information for recognizing the connection relationship between upstream and downstream nodes Means to remember , The topology information Each user terminal Means for exchanging data and transmission / reception of the stream data Means to do Have A user terminal operating as a downstream node requests a user terminal corresponding to an upstream node to connect, a step of receiving the topology information, and a user corresponding to an upstream node requesting connection from the received topology information A user terminal that operates as an upstream node and updates the stored topology information according to the connection with the user terminal corresponding to the downstream node, and the upper upstream The configuration includes a step of merging topology information transmitted from user terminals corresponding to nodes and a step of transmitting the topology information to all user terminals connected as downstream nodes. .
[0013]
The stream data distributed delivery method according to the aspect of the present invention does not require a stream data delivery server managed by a service provider, a distributed delivery system control server, or the like, for example, between user terminals connected to the Internet. Data can be transmitted, received or relayed.
[0014]
Each node can connect to an upstream node recognized by the topology information and receive stream data transmitted from the upstream node. Further, stream data can be transmitted to the downstream node recognized by the topology information. In this case, the own node functioning as an upstream node can connect to a plurality of downstream nodes and transmit stream data in parallel. In addition, the downstream node that receives the stream data from the upstream node functions as an upstream node in response to a connection request from another downstream node, and transmits (in short, relays) the received stream data to the downstream node. Can do. Therefore, distributed distribution of stream data can be realized between user terminals connected to the Internet without requiring a high-performance stream data distribution server operated by a service provider. However, in general, each user terminal is connected to the Internet via an ISP or a communication carrier.
[0015]
If the stream data distribution and delivery method of the present invention is used, a service that can be called personal broadcasting in which a general user distributes personal captured video only to related parties using a personal computer connected to the Internet is possible. It becomes. In addition, a user or a business operator can realize so-called Internet broadcasting in which relay broadcasting such as live performances and concerts is performed for a large number of viewers. In this case, the Internet broadcaster can reduce the load on the distribution server in the commercial Internet stream data distribution service. That is, stream data can be distributed from a server managed by an Internet broadcaster to a small number of user terminals, and the stream data can be distributed from the user terminals to other user terminals. Thereby, the load on the server managed by the Internet broadcaster can be reduced according to the number of user terminals to which the stream data is directly distributed.
[0016]
DETAILED DESCRIPTION OF THE INVENTION
Embodiments of the present invention will be described below with reference to the drawings.
[0017]
(Basic system configuration)
FIG. 1 is a diagram showing the concept of a stream data distributed delivery system according to this embodiment.
[0018]
This system is a configuration in which stream data is distributed and distributed by a plurality of nodes 10 connected to the network, assuming an always-connected high-speed network environment such as the broadband Internet. Here, the stream data means continuous digital data such as moving images (video) and audio. The node 10 is generally a user terminal connected to a network, but may be a network device such as a server or a router. Specifically, the user terminal includes a digital information device (such as a personal computer, a portable information terminal having a wireless communication function (meaning a PDA or a notebook personal computer)), or a mobile phone (including PHS) ( Device). In addition, the user terminal may mean a system configured by connecting a plurality of devices through a LAN or a wireless LAN, as well as the device alone.
[0019]
In this system, the node 10 (B) that has received the stream data transmitted from a certain node 10 (A) decodes and reproduces (views) the stream data and relays it to the other nodes 10. In this case, the node 10 (B) relays the stream data to the plurality of nodes 10 within the allowable range of the data processing capability and the network connection band.
[0020]
In short, this system performs stream data relay from an upstream node to a downstream node, thereby distributing stream data to a large number of user terminals without requiring a high-performance distribution server. To realize. Here, the upstream node is upstream from the own node and is a stream data transmission source node or relay node. The downstream node is a stream data transmission destination node with respect to the own node. The downstream node is also a receiving node that receives the stream data, or a relay node that further transmits to the downstream node.
[0021]
FIG. 2 is a block diagram showing an example of a specific configuration of the present system.
[0022]
As a specific assumption of this system, stream data is distributed to each user terminal participating in the stream data distributed distribution system in a network constructed by connecting the node 10 which is a large number of user terminals to the Internet 20. It is a configuration. Each node 10 is assumed to be connected to the Internet through a constantly connected high-speed line using, for example, an ADSL transmission method or a CATV network.
[0023]
A certain node 10 is a user terminal having, for example, a personal computer (PC) 11 and a broadband network connection interface (BBNID) 12. A BBNID (Broad-Band Network Interface Device) 12 is specifically a network device that integrates an ADSL modem or a cable modem (CATV Internet modem) and a router function. These nodes 10 reproduce the stream data received via the Internet 20 on, for example, the display of the PC 11 and relay it to other downstream nodes 10.
[0024]
A certain node 10 includes, for example, a PC 11 and a digital video camera (DVC) 13. These nodes 10 are user terminals that transmit, as upstream nodes, stream data composed of video (including audio) captured by the DVC 13 using software (main component of the embodiment) set in the PC 11.
[0025]
(Node configuration)
Next, with reference to FIG. 3, the structure of the node 10 which is a user terminal of the embodiment will be described.
[0026]
The node 10 according to the embodiment includes, for example, a personal computer, software set in the computer, and various devices. FIG. 3 is a block diagram showing the software configuration that is the main component of the embodiment and that runs in the PC 11.
[0027]
All the nodes 10 constituting the stream data distributed distribution system have the same software configuration, and realize the functions of transmission, reception, relay, and reproduction of stream data. Hereinafter, each element of the software configuration will be specifically described. The software configuration of the embodiment is designed not to depend on a specific operating system (OS).
[0028]
This software configuration includes a topology engine 30, a stream engine 31, a stream switch unit 32, a GUI (graphical user interface) 33 that manages the operation environment of the entire node, and a stream playback unit 34.
[0029]
The topology engine 30 generally implements a function of configuring a network connection relationship (topology) between the nodes 10 by exchanging messages (control information). Specifically, the topology engine 30 connects the nodes 10 by TCP / IP (transmission control protocol / internet protocol) to transmit and receive various messages. Furthermore, the topology engine 30 recognizes the presence of a nearby node connected directly or indirectly through message exchange. The topology engine 30 obtains an alternative topology from the presence information of the neighboring nodes and the reception state of the stream data, and changes the connection relationship between the nodes 10 once configured according to the topology.
[0030]
The stream engine 31 is software that realizes functions of transmission, reception, and relay of stream data between the nodes 10. Based on the topology information (topology information table described later) received from the topology engine 30, the stream engine 31 transmits the stream data toward the downstream node or nodes that are adjacent nodes. In addition, stream data is received from the upstream node or nodes that are adjacent nodes.
[0031]
Here, the adjacent node means an upstream or downstream node that is directly connected to the own node. Also, the neighborhood node means an upstream or downstream node that is indirectly connected to the own node. Topology information (topology information table) specifies information indicating the logical connection relationship between each node (information identifying upstream / downstream and adjacent / neighborhood), and the adjacent or neighboring node where the connection relationship is formed Information (network address etc.) to be included (see FIG. 15).
[0032]
The stream engine 31 establishes a TCP / IP connection for transmission / reception of stream data, and executes transmission / reception of stream data between the nodes. The stream engine 31 has a general-purpose delivery function that does not depend on the data format (encoding method) of the stream data, and can be applied to various data formats such as the MPEG standard.
[0033]
The stream switch unit 32 is software for realizing a link function between the stream engine 31 and other functions, devices, and files. As a main function, the stream switch unit 32 activates the stream reproduction unit 34 and passes the stream data extracted from the stream engine 31. The stream reproduction unit 34 is software for decoding and reproducing video and audio for output from stream data. Further, the stream switch unit 32 realizes a function of taking out stream data from a local device such as a digital video camera (DVC) 13 or a local file device 36 and sending it to the stream engine 31 to transmit to other nodes.
[0034]
The GUI 33 provides an interface between each of the topology engine 30, the stream engine 31, and the stream data switch unit 32 and the user. Specifically, the GUI 33 visually displays the topology (connection relationship) between adjacent or neighboring nodes or visually displays the communication data amount of the stream engine 31 on the display screen. Also, the GUI 33 makes an explicit connection request to another node and sets a connection key of the own node in response to a command input from the user. The connection key is key data used in an authentication function related to connection between nodes included in the topology engine 30.
[0035]
Here, the authentication function using the connection key (CK) and the public key (PK) will be specifically described. When a certain node is a distribution source (distribution server role), the public key acquisition unit 336 of the GUI 33 acquires a public key (PK) from the connection key issuing server 71 and connects it to the topology engine 30 as described later. The authentication unit 307 receives and stores it (see FIGS. 4 and 7). In response to an authentication request (including the connection key CK) from the connection request accepting unit 306, the connection authentication unit 307 decrypts and authenticates the connection key (CK) using the public key (PK).
[0036]
On the other hand, in the node participating in viewing, the connection key acquisition unit 334 of the GUI 33 acquires the connection key (CK) from the connection key issuing server 71, and this is received and stored by the connection authentication unit 307 of the topology engine 30. When requesting connection to the upstream node, the connection request unit 305 of the topology engine 30 receives the connection key (CK) from the connection authentication unit 307 and executes the connection request to the upstream node.
[0037]
Furthermore, each software configuration of the node 10 will be specifically described with reference to FIGS. 4 to 7.
[0038]
(Topology engine)
As shown in FIG. 4, the topology engine 30 includes a topology management unit 300, a topology table 301, a load state monitoring unit 302, control data communication units 303 and 304, a connection request unit 305, a connection request reception unit 306, and a connection authentication unit. It has 307 functional element units.
[0039]
Based on the topology information (TI) received from the directly connected upstream node, the topology management unit 300 recognizes the presence of adjacent node groups or neighboring node groups and the connection relationship (topology) between these nodes. The topology management unit 300 stores a topology information table in the topology information (TI) table format in the topology table 301 (hereinafter, TI may be referred to as an information table). The topology management unit 300 updates the information table (TI) stored in the topology table 301 in accordance with the change in topology between nodes.
[0040]
The topology management unit 300 passes the node identifiers (network addresses) of the directly connected adjacent nodes, that is, the upstream node (usually singular) and the downstream node (single or plural) to the stream engine 31. The stream engine 31 establishes a TCP / IP connection for stream data transmission / reception with the adjacent node. Further, the topology management unit 300 passes the information table (TI) stored in the topology table 301 to the GUI 33. The GUI 33 visualizes the topology between the nodes based on the information table (TI) and displays it on the screen (see FIG. 7).
[0041]
Here, the topology information table (TI) will be specifically described with reference to FIGS.
[0042]
FIG. 14 is a diagram illustrating an example of a connection relationship (topology) in which each node 10 is connected on the network. Each node 10 is specified by an identifier (node 0 to node 5) corresponding to a network address, for example. Each node 10 basically receives topology information (TI) from an upstream node with respect to its own node and registers it as a topology table 301. Each node 10 provides topology information (TI) to which the connection relationship with the downstream node is added to the downstream node in response to a connection request from the downstream node.
[0043]
Here, temporarily, the upstream node 10 of the node 0 provides the topology information (TI-0) recording the connection relationship with the downstream node (node 1, 4) to the downstream node (node 1, 4). As shown in FIG. 15A, this topology information (TI-0) includes node identifiers (node 0, 1, 4) having a connection relationship and upstream nodes that are adjacent nodes (directly connected nodes). It is an information table in which identifiers (only node 0) are associated. Note that flag information indicating a downstream node may be added to each identifier (node1, 4) of the downstream node. That is, the own node (node0) can recognize the identifier (node1, 4) registered in the topology information (TI-0) as a downstream node that is an adjacent node by the flag information.
[0044]
As shown in FIG. 14, the downstream node (node1) assumes that the own node has established a connection relationship with the downstream nodes (node2, 3) as an upstream node. In this case, the downstream node (node1) generates topology information (TI-1) obtained by adding the connection relation to the topology information (TI-0) provided from the upstream node (node0), and the downstream node (node2) , 3) (see FIG. 15B). Similarly, in this topology information (TI-1), flag information indicating a downstream node may be added to each identifier (node2, 3) of the downstream node.
[0045]
Here, the downstream node (node2) can recognize the connection relationships (1) to (3) from the provided topology information (TI-1). That is, as the connection relationship (1), the existence of the downstream node (node3) can be recognized as an adjacent node to the upstream node (node1) in addition to the own node. As the connection relationship (2), it is possible to recognize the presence of a further upstream node (node0) with respect to the upstream node (node1) of its own node. As the connection relationship (3), the existence of the downstream node (node4) of the upstream node (node0) can be recognized. These indirectly connected nodes node0, node3, and node4 are neighboring nodes for the own node (node2).
[0046]
Similarly, the downstream node (node 3) can recognize the connection relationships (1) to (3) from the provided topology information (TI-1). That is, as the connection relationship (1), it is possible to recognize the existence of the downstream node (node2) as an adjacent node to the upstream node (node1) in addition to the own node. As the connection relationship (2), it is possible to recognize the presence of a further upstream node (node0) with respect to the upstream node (node1) of its own node. As the connection relationship (3), the existence of the downstream node (node4) of the upstream node (node0) can be recognized.
[0047]
On the other hand, as shown in FIG. 14, the downstream node (node4) assumes that the own node has established a connection relationship with the downstream node (node5) as an upstream node. In this case, the downstream node (node 4) generates topology information (TI-4) obtained by adding the connection relation to the provided topology information (TI-0) and provides the topology information (TI-4) to the downstream node (node 5) (FIG. 15 (C)). Similarly, in this topology information (TI-4), flag information indicating a downstream node may be added to the identifier (node5) of the downstream node.
[0048]
In short, each node basically recognizes the existence of neighboring nodes and neighboring nodes by managing (registering, updating, providing, etc.) topology information (TI) provided from upstream to downstream as topology table 301. be able to. As described above, the adjacent node is an upstream node or a downstream node that is directly connected to the own node. A neighboring node is a node indirectly connected to the own node (not necessarily a relationship upstream or downstream from the own node).
[0049]
Note that the amount of topology information (TI) increases as it goes downstream. For this reason, an upper limit value of the information amount is set in advance, and when the upper limit value is exceeded, the topology management unit 300 deletes information (identifier etc.) of the node farthest from the own node. Is desirable.
[0050]
As shown in FIG. 4, the load state monitoring unit 302 monitors the storage state (SB) of a stream data buffer (FIFO buffer) of the stream engine 31 described later, and thereby determines the load state of the stream engine 31. When the load state of the stream engine 31 exceeds the allowable range, the load state monitoring unit 302 instructs the topology management unit 300 to disconnect the downstream node. As will be described later, the storage state (SB) of the stream data buffer of the stream engine 31 is also notified to the GUI 33.
[0051]
The control data communication unit 303 establishes a control data communication channel with the upstream node 10A in response to an instruction from the connection request unit 305. The upstream node 10A corresponds to the stream data transmission source node from the node 10 itself. The control data communication unit 303 receives the topology information (TI) from the upstream node 10A. In addition, the control data communication unit 303 disconnects the control data communication channel when switching the upstream node 10A to another node.
[0052]
The control data communication unit 304 establishes a control data communication channel with the downstream node 10B in response to an instruction from the connection request reception unit 306. The downstream node 10B corresponds to a transmission destination node of stream data transmitted from the own node. The control data communication unit 304 transmits topology information (TI) to the downstream node 10B. Further, the control data communication unit 304 disconnects the control data communication channel when the downstream node 10B switches the upstream node from its own node to another node.
[0053]
The connection request unit 305 makes a connection request to the upstream node 10 </ b> A according to the upstream node designation (CR) from the GUI 33. Furthermore, the connection request unit 305 instructs the control data communication unit 303 to connect in response to a connection acceptance notification from the upstream node 10A that has transmitted the connection request. At this time, the topology management unit 300 is instructed to register the network address of the upstream node 10A where the control data communication channel is established. In response to the connection request, the connection request unit 305 exchanges connection key data (CK) and public key data (PK) necessary for connection authentication processing with the upstream node 10A to be connected.
[0054]
The connection request accepting unit 306 accepts a connection when authenticated by the connection authentication unit 307 in response to a connection request from the downstream node 10B. In response to the connection acceptance, the connection request accepting unit 306 instructs the control data communication unit 304 to connect, and also registers the network address of the downstream node 10B where the control data communication channel is established with respect to the topology management unit 300. Instruct. The connection request accepting unit 306 exchanges connection key data (CK) and public key data (PK) necessary for connection authentication processing with the downstream node 10B to be connected along with connection acceptance. The connection authentication processing procedure will be described later.
[0055]
The connection authentication unit 307 executes connection authentication processing necessary for connection with other nodes (upstream node and downstream node) by the connection request unit 305 and the connection reception unit 306. The connection authentication unit 307 executes authentication processing using a public key cryptosystem, and receives connection key data (CK) and public key data (PK) corresponding to the authentication ticket from the GUI 33. The connection authentication unit 307 also exchanges connection key data (CK) and public key data (PK) with each of the connection request unit 305 and the connection request reception unit 306.
[0056]
Here, as described above, when a certain node becomes the distribution source (the role of the distribution server), the public key acquisition unit 336 of the GUI 33 acquires the public key data (PK) from the connection key issue server 71, and this is represented by the topology. The connection authentication unit 307 of the engine 30 receives and stores it. In response to an authentication request (including connection key data CK) from the connection request receiving unit 306, the connection authentication unit 307 decrypts and authenticates the connection key data (CK) using the public key data (PK). . In addition, the connection key acquisition unit 334 of the GUI 33 acquires the connection key data (CK) from the connection key issuing server 71, and the connection authentication unit 307 of the topology engine 30 receives and stores the node participating in viewing. When requesting connection to the upstream node, the connection request unit 305 of the topology engine 30 receives the connection key data (CK) from the connection authentication unit 307 and executes the connection request to the upstream node.
[0057]
(Stream engine)
As shown in FIG. 5, the stream engine 31 includes a stream data transmission unit 311, a stream data reception unit 312, a stream data buffer 313, a stream data buffer state monitoring unit 314, and a stream data communication connection management unit 315. Have
[0058]
The stream data transmission unit 311 transmits (relays) the stream data stored in the stream data buffer 313 to the downstream node. At this time, the stream data transmission unit 311 transmits the stream data to the downstream node to which the connection permission instruction is given from the stream data communication connection management unit 315.
[0059]
The stream data buffer 313 is a FIFO buffer that temporarily stores the stream data received from the upstream node received by the stream data receiving unit 312 or the stream data received from the stream switch unit 32. The stream data buffer state monitoring unit 314 constantly monitors the storage state (SB) of the stream data buffer 313 and notifies the topology engine 30 and the GUI 33. Here, the storage state (SB) means the amount of data in which stream data is stored with respect to the size of the buffer 313.
[0060]
The stream data receiving unit 312 establishes a stream data communication channel with the upstream node designated by the stream data communication connection management unit 315. Then, the stream data transmitted from the upstream node is received and written to the stream data buffer 313. The stream data communication connection management unit 315 receives from the topology engine 30 a list of adjacent nodes that should establish a connection relationship with the stream data communication channel.
[0061]
(Stream switch part)
As shown in FIG. 6, the stream data switch unit 32 switches the input / output of stream data in accordance with the designation (SW) from the GUI 33. That is, the stream switch unit 32 transfers the stream data received from the stream engine 31 to the stream data reproduction unit 34 or the local file device 60 of the node. Further, the stream switch unit 32 reads the stream data from the digital video camera (DVC) 35 or the encoder device 36 which is a local device or the stream data stored in the local file device 60 and transfers the stream data to the stream engine 31. .
[0062]
(GUI)
As shown in FIG. 7, the GUI 33 includes a stream data relay control unit 331, a relay state (quality) display unit 332, a topology display unit 333, a connection key acquisition unit 334, an upstream node determination unit 335, and a public key acquisition unit 336. Each functional element part is included. The GUI 33 inputs a command corresponding to an operation on an icon on the display screen of the display device 70 and displays various display information on the display screen.
[0063]
The stream data relay control unit 331 instructs the stream engine 31 to stop or restart the stream data relay (SC) in response to a command input from the user. The relay state (quality) display unit 332 reads the storage state (SB) of the stream data buffer 313 from the stream engine 31 and executes a process for displaying it on the display screen.
[0064]
The topology display unit 333 receives the topology information (TI) from the topology engine 30 and executes a process of displaying the connection relationship between adjacent nodes or neighboring nodes on the display screen. The connection key acquisition unit 334 passes the connection key data (CK) input from the user or the connection key data (CK) issued from the connection key issuing server 71 described later to the topology engine 30. In the case of a connection request to the upstream node, the connection request unit 305 of the topology engine 30 receives the connection key data (CK) from the connection authentication unit 307 and executes the connection request to the upstream node.
[0065]
The public key acquisition unit 336 of the GUI 33 acquires public key data (PK) from the connection key issuing server 71 when a certain node becomes a distribution source (role of the distribution server), and passes it to the connection authentication unit 307 of the topology engine 30. . In response to an authentication request (including connection key data CK) from the connection request receiving unit 306, the connection authentication unit 307 decrypts and authenticates the connection key data (CK) using the public key data (PK). .
[0066]
The upstream node determination unit 335 passes the network address of the upstream node designated by the user or the upstream node mediated by the node mediation server 72 described later to the topology engine 30.
[0067]
(Connection establishment procedure)
Hereinafter, with reference to FIG. 8, a procedure of connection processing between nodes according to the embodiment will be described.
[0068]
The connection process between the nodes is divided into a connection process with the downstream node as seen from the own node shown in FIG. 8A and a connection process with the upstream node as seen from the own node shown in FIG. In short, the own node executes connection processing with the upstream node or the downstream node as a relative relationship.
[0069]
First, in the connection process with the upstream node, the topology engine 30 of the own node transmits a connection request message to the upstream node (step S1). Specifically, the connection request unit 305 shown in FIG. 4 transmits a connection request message including connection key data and ID data. The ID data includes, for example, a group ID for the purpose of constructing a specific network for distributing stream data, or a content ID set for each content of stream data. The ID data includes ID data (for example, a MAC address of a network interface, a serial number embedded in a microprocessor, etc.) for identifying hardware of each node.
[0070]
The own node is in a standby state until receiving an answer to the connection request (result of the connection authentication process) from the upstream node (step S2). When receiving a connection permission message from the upstream node, the topology engine 30 establishes a control communication channel with the upstream node and registers the upstream node in the topology table 301 (step S4). Further, the topology engine 30 stores public key data included in the connection permission message received from the upstream node. Furthermore, the topology engine 30 registers the connected upstream node in the stream engine 31 (step S5). As a result, the stream engine 31 connects the upstream node and the stream data communication channel, and is ready to receive stream data.
[0071]
On the other hand, when the node receives a connection rejection message from the upstream node, it can proceed to a process of attempting to connect to another upstream node (NO in step S3, S6). Here, another upstream node is an upstream node necessary for receiving the distribution of the stream data desired by the node, and is a node belonging to the same group constituting the stream data distributed distribution network (described later). .
[0072]
Next, connection processing with a downstream node, that is, connection processing when the node itself is a relatively upstream node will be described with reference to a flowchart shown in FIG.
[0073]
When receiving the connection request message including the connection key data from the downstream node, the own node executes connection authentication processing (steps S11 and S12). The connection authentication unit 307 of the topology engine 30 executes a connection authentication process by decrypting the connection key using public key data acquired in advance, and returns a connection rejection message to the downstream node if the authentication cannot be performed ( NO in step S13, S17).
[0074]
On the other hand, when the authentication is successful, the topology engine 30 determines whether or not the quality of the stream data relay to the existing downstream node is equal to or higher than the specified value. If the determination result is equal to or lower than the specified value, the topology rejection is performed. The message is returned to the downstream node (NO in step S114, S17). That is, as a result of connecting a new downstream node, if the relay quality is lower than the specified value, the own node rejects the connection in order to prevent the number of downstream nodes from being increased.
[0075]
When finally permitting the connection, the topology engine 30 returns a connection permission message including the public key data to the downstream node (YES in step S14, S15). Further, the topology engine 30 registers the downstream node permitted to be connected in the topology table 301 and registers the downstream node in the stream engine 31 (step S16). As a result, the stream engine 31 connects the downstream node and the stream data communication channel, and is ready to transmit stream data.
[0076]
Through the connection process as described above, the connection between the upstream node and the downstream node is established, and as shown in FIG. 1, a stream data distributed delivery network can be configured.
[0077]
(Upstream node acquisition procedure)
In the following, with reference to FIG. 9, a procedure for newly acquiring an upstream node in order for the own node to receive stream data distribution, that is, to participate in the stream data distributed distribution system will be described. Here, steps S21 to S26 shown in FIGS. 4A and 4C show processing procedures on each node side. Further, steps S31 to S37 shown in FIG. 5B show a processing procedure on the node mediation server side.
[0078]
Here, assuming the presence of a node mediation server (server 72 in FIG. 7), a configuration for receiving an introduction of an upstream node from this node mediation server will be described.
[0079]
The node mediation server registers in the node database 720 a plurality of nodes corresponding to the group ID, that is, belonging to one stream data distributed delivery system. Of course, nodes belonging to each of a plurality of group IDs (stream data distributed distribution systems) can be registered in the node database 720.
[0080]
First, the own node transmits an upstream node introduction request message (including a group ID) to the node mediation server (step S21). When receiving the message, the node mediation server searches the node database 720 for a node belonging to the stream data distributed delivery system (steps S31 and S32). Then, the node mediation server returns a response message including the network address of the searched node (step S33).
[0081]
The own node acquires the network address of the upstream node introduced from the response message, and shifts to connection processing with the upstream node (steps S22 and S23). Step S23 is a processing step started from step S1 of FIG. In this connection process, as described above, the introduced upstream node executes the connection authentication process, and finally determines whether to permit or reject the connection. When the connection with the upstream node is not completed, the own node transmits an introduction request message to the node mediation server again (NO in step S24, S21).
[0082]
When the connection with the upstream node is completed, a connection completion message is transmitted to the node mediation server (YES in step S24, S25). When receiving the message, the node mediation server registers the node itself in the node database 720 (steps S34 and S35). On the other hand, when the node mediation server receives a node leave message indicating that the node has left the stream data distributed distribution network from its own node, the node mediation server deletes its own node registration from the node database 720 (steps SS26, S36, and S37).
[0083]
Through the processing as described above, a user who wishes to participate in a stream data distribution and distribution network can connect to an upstream node that relays stream data. If the network address of the upstream node can be obtained by another method without interposing a node mediation server, connection to the upstream node is possible.
[0084]
(Topology change procedure)
Hereinafter, with reference to FIG. 10, a procedure in the case of changing the topology, which is the connection relationship of the stream data distributed distribution network configured by connecting the nodes, will be described.
[0085]
Here, as shown in FIG. 10A, a topology is assumed in which a relatively downstream node (1), a node (2), and an upstream node (3) are connected. As shown in FIG. 5B, the node (2) executes upstream node change processing for the node (1) as topology change processing. That is, the node (2) transmits an upstream node change message including the designation of the alternative upstream node (3) to the downstream node (1) (step S41).
[0086]
When receiving the upstream node change message from the upstream node (2), the downstream node (1) executes connection processing for the designated alternative upstream node (3) as shown in FIG. S46). In the connection process, the downstream node (1) transmits a connection request message to the alternative upstream node (3). The alternative upstream node (3) executes the connection process with the downstream node (1) based on the received connection request message as shown in FIG. Then, the alternative upstream node (3) returns a connection permission message or a connection rejection message to the downstream node (1). Steps S46 and S50 correspond to processing steps started from steps S1 and S11 in FIG.
[0087]
When the downstream node (1) receives the connection permission message from the alternative upstream node (3), the downstream node (1) transmits an upstream change completion notification to the upstream node (2) (step S47). The downstream node (1) disconnects the communication channel (control data communication channel and stream data communication channel) with the upstream node (2), and deletes the registration of the upstream node (2) from the topology table 301 (steps S48 and S49). ).
[0088]
On the other hand, when the upstream node (2) receives the notification of completion of the upstream change, the upstream node (2) disconnects the communication channel (control data communication channel and stream data communication channel) with the downstream node (1), and the downstream node (2 ) Is deleted (steps S42, S43, S44).
[0089]
Through the upstream change processing as described above, the connection relationship between the upstream node and the downstream node is changed, and as a result, the topology that is the connection relationship between the nodes can be changed. This topology change function is effective when, for example, the node (2) leaves the network or a new node (3) joins. That is, since the downstream node (1) can dynamically and autonomously change the upstream node according to the situation of each node, it can receive the stream data without stopping.
[0090]
(Connection disconnection procedure)
Hereinafter, with reference to FIG. 11, a procedure of disconnection processing between nodes according to the embodiment will be described. Here, a procedure for disconnecting a connection from a downstream node to an upstream node will be described. The reverse procedure is basically the same procedure.
[0091]
First, the downstream node transmits a disconnect message to the connected upstream node, as shown in FIG. When receiving the disconnect message, the upstream node transmits a disconnect acceptance notification to the downstream node (steps S66 and S67).
[0092]
When receiving the notification of acceptance of disconnection from the upstream node, the downstream node disconnects the communication channel (control data communication channel and stream data communication channel) with the upstream node (steps S62 and S63). Further, the downstream node deletes the registration of the upstream node from the topology table 301 (step S64).
[0093]
On the other hand, the upstream node disconnects the communication channel (control data communication channel and stream data communication channel) with the downstream node (step S68). Further, the upstream node deletes the registration of the downstream node from the topology table 301 (step S69).
[0094]
By the connection disconnection process as described above, each node can disconnect the connection with a node having a connection relationship at an arbitrary timing. By this connection disconnection process, the topology between the nodes is changed.
[0095]
(Processing procedure of downstream node)
FIG. 12 is a flowchart for organizing and explaining the processing procedure on the downstream node side.
[0096]
First, when a user participates in a stream data distributed distribution network, the user terminal executes an initialization process as a downstream node (step S70). Specifically, as described above, the upstream node is introduced from the node mediation server (step S80). The downstream node executes a connection request for the introduced upstream node (step S81). When the connection permission notification is received from the upstream node, the connection with the upstream node is completed (YES in step S82). Thereby, the downstream node can receive the stream data from the introduced upstream node.
[0097]
Next, when the upstream change message is received from the connected upstream node (step S71), the downstream node makes a connection request to the alternative upstream node included in the message (step S81). If a connection permission notification is received from the alternative upstream node in response to this connection request, the connection with the upstream node is completed (YES in step S82). Here, the downstream node receives an introduction of a new upstream node from the node mediation server when a connection rejection notification is received from the introduced upstream node or the alternative upstream node or when no response is obtained (step S82). NO (A), S80).
[0098]
On the other hand, if the downstream node detects communication interruption (including disconnection of the communication channel) with the connected upstream node (step S72), the downstream node selects another upstream node from the topology table 301 (step S83). . The downstream node executes a connection request for the selected upstream node (step S81). When the connection permission notification is received from the upstream node, the connection with the upstream node is completed (YES in step S82).
[0099]
When the connection rejection notification is received from the selected upstream node, the downstream node executes selection and connection requests for all the upstream node candidates from the topology table 301 (NO in step S82, NO in S84). ). When connection rejection notifications are received from all upstream node candidates, the downstream node receives a new upstream node introduction from the node mediation server again (YES in step S84, S80).
[0100]
Further, when the downstream node detects a drop in the quality of the stream data relay from the connected upstream node (step S73), the downstream node disconnects from the upstream node and selects another upstream node from the topology table 301. The process proceeds to the selection process (steps S85 and S83). The subsequent processing is the same as that in the case of the communication interruption with the upstream node.
[0101]
(Topology information exchange procedure)
FIG. 13 is a flowchart for organizing and explaining the procedure for exchanging topology information between nodes.
[0102]
As described above, each node exchanges the topology information table (TI) in the topology engine 30 through the topology management unit 300, the topology table 301, and the control data communication units 303 and 304.
[0103]
Here, it is assumed that the topology information table (TI) is transmitted from the upstream node to the downstream node. The upstream node transmits a topology information table indicating the connection relationship between the own node and the adjacent node or the neighboring node to the connected downstream node (step S90). When the downstream node receives the topology information table from the upstream node, it merges (adds) the topology table 301 and stores it (steps S91 and S92).
[0104]
As described above, according to the embodiment, in the network environment such as the broadband Internet, the nodes are connected to each other by the function of the topology engine 30 provided in each node, and are configured by the upstream node and the downstream node. A stream data distribution / distribution network can be formed. Specifically, as shown in FIG. 1, for example, stream data transmitted from the most upstream node 10 (A) is distributed to a nearby downstream node 10 (B). The downstream node 10 (B) decodes and reproduces the received stream data, and at the same time relays the stream data to the downstream node as an upstream node. Similarly, each downstream node decodes and reproduces the received stream data, and at the same time relays it to the downstream node as an upstream node. However, in general, each node connects to the Internet via an ISP (Internet connection service provider) or a communication carrier.
[0105]
Therefore, even if there is no stream data distribution server, a stream data distribution network composed only of clients (user terminals) can be realized. By using such a distributed network formation function, it is possible to reduce the load required for the delivery processing of the server even in the case of a network that delivers stream data from a server for delivering stream data. That is, for example, stream data can be distributed to each user terminal from a server operated by a broadcaster, and the stream data can be distributed from each user terminal to each other user terminal. Thereby, the load on the server operated by the broadcaster can be kept low without depending on the number of user terminals to which the stream data is distributed.
[0106]
In addition, it is possible to construct a private network in which a user distributes a personal photographed video or the like not to a so-called commercial stream data distribution system network but to each of the nodes only for the parties connected to the Internet. Using such a private network, it is possible to provide a service that can be called personal broadcasting.
[0107]
In the embodiment, the case where the existence of a node mediation server is assumed is mentioned. This node mediation server is completely different from the server for stream data distribution, that is, the central control server of the distributed distribution system, and is a server having only a limited function for introducing candidates as upstream servers. is there. Therefore, the server does not need a database that accurately recognizes all the nodes constituting the network, and there may be an unknown node among the nodes participating in the network. In addition, when the user knows the upstream node by a method different from the introduction from the node mediation server, the node mediation server is naturally unnecessary. In short, in the embodiment, the presence of the node mediation server is not an essential requirement, and is desirable from the viewpoint of practical service efficiency.
[0108]
(Business model or application example applicable to the same embodiment)
By applying the stream data distributed delivery network of the embodiment, the following business model or application example can be realized.
[0109]
(1) For example, it is possible to realize a system that can also be called personal broadcast or community broadcast that distributes video taken personally by a user as stream data to each user (only related parties) at a wedding reception or the like. In this case, each node that constructs the network is configured by only user terminals specified by, for example, a connection authentication function using a public key method.
[0110]
(2) As an extended system of the above (1), a video chat service can be realized by gathering a plurality of users who have prepared video cameras and transmitting and receiving them simultaneously.
[0111]
(3) When a node equipped with a video camera is installed in a specific outdoor location such as a street, a building, a concert hall, etc., and an event or event occurs, video taken with the video camera (with audio) Can be called a location service that relays to each node that has contracted in advance and received a connection key. In this case, each node can receive a relay service by making a contract with a service company and connecting to a network operated by the company. Specifically, so-called Internet concert live broadcasting can be easily realized.
[0112]
(4) In a content commercial distribution service network, when a paid content is distributed to each user from a server operated by an operator, the distribution load on the server side is reduced by providing the relay node by the user. Can be reduced. In this case, the system of the embodiment can be used effectively by giving the user who provides the relay node an incentive to provide points that can be exchanged for the viewing ticket of the content.
[0113]
(5) By using a control data communication channel between nodes, a stream is formed by connecting each node with peer-to-peer communication including information communication from the downstream node to the upstream node. Various communication services can be realized simultaneously with distribution. For example, by collecting information from downstream to upstream, it becomes possible to provide popularity voting services for distributed content and real-time services for quizzes and questionnaires. Also in this case, it is an advantage that a large-scale server that handles simultaneous access is not necessary. In addition, communication such as chat between downstream nodes can be realized simultaneously with stream distribution. A service that allows viewers to chat with each other while watching a concert broadcast.
[0114]
【The invention's effect】
As described above in detail, according to the present invention, it is possible to provide a stream data distribution and delivery technique that can realize autonomous or personal stream data delivery between user terminals in a network environment such as the Internet. Specifically, for example, using a broadband network environment, it is possible to achieve distributed distribution of moving image / audio stream data between clients (terminal nodes) without preparing a special stream data distribution server.
[Brief description of the drawings]
FIG. 1 is a diagram showing a concept of a stream data distributed delivery system according to an embodiment of the present invention.
FIG. 2 is a block diagram showing an example of a specific configuration of a system according to the embodiment.
FIG. 3 is an exemplary block diagram showing the configuration of a node (user terminal) according to the embodiment.
FIG. 4 is a block diagram showing a configuration of a topology engine of the same node.
FIG. 5 is a block diagram showing a configuration of a stream engine of the same node.
FIG. 6 is a block diagram showing a configuration of a stream data switch unit of the node.
FIG. 7 is a block diagram showing a configuration of a GUI of the node.
FIG. 8 is an exemplary flowchart for explaining a procedure of connection establishment processing between nodes according to the embodiment;
FIG. 9 is a flowchart for explaining an upstream node acquisition procedure according to the embodiment;
FIG. 10 is a flowchart for explaining a topology change procedure according to the embodiment;
FIG. 11 is an exemplary flowchart for explaining a procedure of connection disconnection processing between nodes according to the embodiment;
FIG. 12 is a flowchart for explaining a processing procedure on the downstream node side according to the embodiment;
FIG. 13 is an exemplary flowchart for explaining a procedure for exchanging topology information between nodes according to the embodiment;
FIG. 14 is a view for explaining the contents of topology information related to the embodiment;
FIG. 15 is a diagram showing an example of the topology information.
[Explanation of symbols]
10 ... node
11 ... Personal computer (PC)
12 ... Router
13. Digital video camera (DVC)
20 ... Internet
30 ... Topology engine
31 ... Stream engine
32 ... Stream switch section
33 ... GUI
34: Stream data reproduction unit
300 ... Topology management unit
301 ... Node table
302: Load state monitoring unit
303 ... Control data communication unit
304: Control data communication unit
305 ... Connection request section
306 ... Connection request receiving part
307: Connection authentication unit
311: Stream data transmission unit
312: Stream data receiving unit
313: Stream data buffer
314: Stream data buffer state monitoring unit
315: Stream data communication connection management unit

Claims (20)

複数のユーザ端末が相互接続して構築されるネットワークにおいて、各ユーザ端末間で、上流ノードとしてのユーザ端末がストリームデータを送信し、下流ノードとしてのユーザ端末がストリームデータを受信するストリームデータ分散配信機能を実現する方法であって、
前記各ユーザ端末は、下流ノードとして接続先の上流ノードを認識する情報を含み、上流ノードと下流ノードとの接続関係を認識するためのトポロジ情報を記憶する手段、当該トポロジ情報を各ユーザ端末間で交換する手段、及び前記ストリームデータの送受信を行なう手段を有し、
下流ノードとして動作するユーザ端末は、
上流ノードに相当するユーザ端末に接続を要求するステップと、
前記トポロジ情報を受信するステップと、
受信した前記トポロジ情報から、接続を要求する上流ノードに相当するユーザ端末を選択するステップと
を有する手順を実行し、
上流ノードとして動作するユーザ端末は、
記憶しているトポロジ情報に対して、下流ノードに相当するユーザ端末との接続に従って更新し、かつ上位の上流ノードに相当するユーザ端末から送信されたトポロジ情報を併合するステップと、
下流ノードとして接続された全てのユーザ端末に対して、前記トポロジ情報を送信するステップと
を有する手順を実行することを特徴とするストリームデータ分散配信方法。
In a network where a plurality of user terminals is constructed by interconnecting between each user terminal, the user terminal as an upstream node transmits stream data, stream data distributed delivery user terminal as a downstream node receives stream data A method of realizing a function,
Each user terminal includes information for recognizing a connection destination upstream node as a downstream node, means for storing topology information for recognizing a connection relationship between the upstream node and the downstream node, and the topology information between the user terminals. And means for exchanging the stream data, and means for transmitting and receiving the stream data,
User terminals that operate as downstream nodes
Requesting a connection to a user terminal corresponding to an upstream node;
Receiving the topology information;
Selecting a user terminal corresponding to an upstream node requesting connection from the received topology information;
Perform the steps with
User terminals that operate as upstream nodes
Updating the stored topology information according to the connection with the user terminal corresponding to the downstream node, and merging the topology information transmitted from the user terminal corresponding to the upper upstream node;
Transmitting the topology information to all user terminals connected as downstream nodes;
A method for distributing and distributing stream data, comprising:
前記各ユーザ端末は、
上流ノードまたは下流ノードに相当するユーザ端末との接続切断に応じて、前記トポロジ情報を更新するステップを有することを特徴とする請求項1に記載のストリームデータ分散配信方法。
Each of the user terminals is
The stream data distributed delivery method according to claim 1 , further comprising a step of updating the topology information in response to disconnection of a user terminal corresponding to an upstream node or a downstream node .
下流ノードとして動作するユーザ端末は、
既存の上流ノードに相当するユーザ端末との接続切断に応じて、前記トポロジ情報から新たな上流ノードに相当するユーザ端末を選択するステップと、
前記選択した上流ノードに相当するユーザ端末に対して、接続を要求するステップと
を有することを特徴とする請求項1または請求項2のいずれか1項に記載のストリームデータ分散配信方法。
User terminals that operate as downstream nodes
Selecting a user terminal corresponding to a new upstream node from the topology information in response to disconnection with a user terminal corresponding to an existing upstream node;
The stream data distributed distribution according to any one of claims 1 and 2, further comprising a step of requesting connection to a user terminal corresponding to the selected upstream node. Method.
上流ノードとして動作するユーザ端末は、
下流ノードに相当するユーザ端末からの接続要求に応じて接続認証処理を実行するステップを有することを特徴とする請求項1に記載のストリームデータ分散配信方法。
User terminals that operate as upstream nodes
Stream data distributed delivery method according to claim 1, characterized that you have the step of performing connection authentication process in response to a connection request from a user terminal corresponding to the downstream node.
下流ノードとして動作するユーザ端末は、
前記上流ノードに相当するユーザ端末から受信した前記ストリームデータを再生するステップを有することを特徴とする請求項1から請求項4のいずれか1項に記載のストリームデータ分散配信方法。
User terminals that operate as downstream nodes
The method for distributing and distributing stream data according to any one of claims 1 to 4, further comprising a step of reproducing the stream data received from a user terminal corresponding to the upstream node .
複数のユーザ端末が相互接続して構築されるネットワークにおいて、各ユーザ端末間で、上流ノードとしてのユーザ端末がストリームデータを送信し、下流ノードとしてのユーザ端末がストリームデータを受信するストリームデータ分散配信機能を実現するためのプログラムであって、
前記各ユーザ端末は、前記プログラムを実行するコンピュータを有し、
下流ノードとして接続先の上流ノードを認識する情報を含み、上流ノードと下流ノードとの接続関係を認識するためのトポロジ情報を記憶する機能と、
前記トポロジ情報を各ユーザ端末間で交換する機能と、
前記ストリームデータの送受信を行なう機能とを前記コンピュータに実現させて、
下流ノードとして動作する場合に、
上流ノードに相当するユーザ端末に接続を要求する機能と、
前記トポロジ情報を受信する機能と、
受信した前記トポロジ情報から、接続を要求する上流ノードに相当するユーザ端末を選択する機能とを前記コンピュータに実現させて、
上流ノードとして動作する場合に、
記憶しているトポロジ情報に対して、下流ノードに相当するユーザ端末との接続に従って更新し、かつ上位の上流ノードに相当するユーザ端末から送信されたトポロジ情報を併合する機能と、
下流ノードとして接続された全てのユーザ端末に対して、前記トポロジ情報を送信する機能とを前記コンピュータに実現させるためのプログラム
In a network constructed by connecting a plurality of user terminals to each other, stream data distributed delivery in which user terminals as upstream nodes transmit stream data and user terminals as downstream nodes receive stream data between each user terminal A program for realizing the function,
Each of the user terminals has a computer that executes the program,
A function for storing topology information for recognizing a connection relationship between an upstream node and a downstream node, including information for recognizing a connection destination upstream node as a downstream node;
A function of exchanging the topology information between user terminals;
A function of performing transmission and reception of the stream data in the computer,
When operating as a downstream node,
A function for requesting connection to a user terminal corresponding to an upstream node;
A function of receiving the topology information;
A function of selecting a user terminal corresponding to an upstream node requesting connection from the received topology information is realized in the computer,
When operating as an upstream node,
A function of updating the stored topology information according to the connection with the user terminal corresponding to the downstream node and merging the topology information transmitted from the user terminal corresponding to the upper upstream node;
A program for causing the computer to realize a function of transmitting the topology information to all user terminals connected as downstream nodes .
上流ノードまたは下流ノードに相当するユーザ端末との接続切断に応じて、前記トポロジ情報を更新する機能を前記コンピュータに実現させることを特徴とする請求項6に記載のプログラムThe program according to claim 6, wherein the computer realizes a function of updating the topology information in response to disconnection of a user terminal corresponding to an upstream node or a downstream node . 下流ノードとして動作する場合に、
既存の上流ノードに相当するユーザ端末との接続切断に応じて、前記トポロジ情報から新たな上流ノードに相当するユーザ端末を選択する機能と、
前記選択した上流ノードに相当するユーザ端末に対して、接続を要求する機能と
を前記コンピュータに実現させることを特徴とする請求項6または請求項7のいずれか1項に記載のプログラム
When operating as a downstream node,
A function of selecting a user terminal corresponding to a new upstream node from the topology information in response to disconnection with a user terminal corresponding to an existing upstream node;
A function of requesting connection to a user terminal corresponding to the selected upstream node;
The program according to any one of claims 6 and 7 , wherein the program is realized by the computer .
上流ノードとして動作する場合に、
下流ノードに相当するユーザ端末からの接続要求に応じて接続認証処理を実行する機能を前記コンピュータに実現させることを特徴とする請求項に記載のプログラム
When operating as an upstream node,
7. The program according to claim 6 , which causes the computer to realize a function of executing connection authentication processing in response to a connection request from a user terminal corresponding to a downstream node .
下流ノードとして動作する場合に、
前記上流ノードに相当するユーザ端末から受信した前記ストリームデータを再生する機能を前記コンピュータに実現させることを特徴とする請求項から請求項9のいずれか1項に記載のプログラム
When operating as a downstream node,
The program according to any one of claims 6 to 9, wherein the computer realizes a function of reproducing the stream data received from a user terminal corresponding to the upstream node .
複数のユーザ端末が相互接続して構築されるネットワークにおいて、各ユーザ端末間で、上流ノードとしてのユーザ端末がストリームデータを送信し、下流ノードとしてのユーザ端末がストリームデータを受信するストリームデータ分散配信機能を実現するシステムであって、
前記各ユーザ端末は、
下流ノードとして接続先の上流ノードを認識する情報を含み、上流ノードと下流ノードとの接続関係を認識するためのトポロジ情報を記憶する手段と、
前記トポロジ情報を各ユーザ端末間で交換する手段と、
前記ストリームデータの送受信を行なう手段とを有し、
下流ノードとして動作するユーザ端末は、
上流ノードに相当するユーザ端末に接続を要求する手段と、
前記トポロジ情報を受信する手段と、
受信した前記トポロジ情報から、接続を要求する上流ノードに相当するユーザ端末を選択する手段とを有し、
上流ノードとして動作するユーザ端末は、
記憶しているトポロジ情報に対して、下流ノードに相当するユーザ端末との接続に従って更新し、かつ上位の上流ノードに相当するユーザ端末から送信されたトポロジ情報を併合する手段と、
下流ノードとして接続された全てのユーザ端末に対して、前記トポロジ情報を送信する手段と
を有することを特徴とするストリームデータ分散配信システム
In a network constructed by connecting a plurality of user terminals to each other, stream data distributed delivery in which user terminals as upstream nodes transmit stream data and user terminals as downstream nodes receive stream data between each user terminal A system that realizes functions,
Each of the user terminals is
Means for storing topology information for recognizing a connection relationship between an upstream node and a downstream node, including information for recognizing a connection destination upstream node as a downstream node;
Means for exchanging the topology information between user terminals;
Means for transmitting and receiving the stream data;
User terminals that operate as downstream nodes
Means for requesting connection to a user terminal corresponding to an upstream node;
Means for receiving the topology information;
Means for selecting, from the received topology information, a user terminal corresponding to an upstream node that requests connection;
User terminals that operate as upstream nodes
Means for updating the stored topology information in accordance with the connection with the user terminal corresponding to the downstream node and merging the topology information transmitted from the user terminal corresponding to the upper upstream node;
Means for transmitting the topology information to all user terminals connected as downstream nodes;
A stream data distribution and delivery system comprising:
前記各ユーザ端末は、
上流ノードまたは下流ノードに相当するユーザ端末との接続切断に応じて、前記トポロジ情報を更新する手段を有することを特徴とする請求項11に記載のストリームデータ分散配信システム
Each of the user terminals is
12. The stream data distributed delivery system according to claim 11, further comprising means for updating the topology information in response to disconnection of a user terminal corresponding to an upstream node or a downstream node .
下流ノードとして動作するユーザ端末は、
既存の上流ノードに相当するユーザ端末との接続切断に応じて、前記トポロジ情報から新たな上流ノードに相当するユーザ端末を選択する手段と、
前記選択した上流ノードに相当するユーザ端末に対して、接続を要求する手段と
を有することを特徴とする請求項11または請求項12のいずれか1項に記載のストリームデータ分散配信システム
User terminals that operate as downstream nodes
Means for selecting a user terminal corresponding to a new upstream node from the topology information in response to disconnection from a user terminal corresponding to an existing upstream node;
Means for requesting connection to the user terminal corresponding to the selected upstream node;
Stream data distributed delivery system according to any one of claims 11 or claim 12 characterized in that it has a.
上流ノードとして動作するユーザ端末は、
下流ノードに相当するユーザ端末からの接続要求に応じて接続認証処理を実行する手段を有することを特徴とする請求項11に記載のストリームデータ分散配信システム
User terminals that operate as upstream nodes
12. The stream data distributed delivery system according to claim 11 , further comprising means for executing connection authentication processing in response to a connection request from a user terminal corresponding to a downstream node .
下流ノードとして動作するユーザ端末は、
前記上流ノードに相当するユーザ端末から受信した前記ストリームデータを再生する手段を有することを特徴とする請求項11から請求項14のいずれか1項に記載のストリームデータ分散配信システム
User terminals that operate as downstream nodes
The stream data distributed delivery system according to any one of claims 11 to 14, further comprising means for reproducing the stream data received from a user terminal corresponding to the upstream node .
複数のユーザ端末が相互接続して構築されるネットワークにおいて、各ユーザ端末間で、上流ノードとしてのユーザ端末がストリームデータを送信し、下流ノードとしてのユーザ端末がストリームデータを受信する各ユーザ端末のそれぞれを構成する電子機器であって、
前記各ユーザ端末は、
下流ノードとして接続先の上流ノードを認識する情報を含み、上流ノードと下流ノードとの接続関係を認識するためのトポロジ情報を記憶する手段と、
前記トポロジ情報を各ユーザ端末間で交換する手段と、
前記ストリームデータの送受信を行なう手段とを有し、
下流ノードとして動作するユーザ端末は、
上流ノードに相当するユーザ端末に接続を要求する手段と、
前記トポロジ情報を受信する手段と、
受信した前記トポロジ情報から、接続を要求する上流ノードに相当するユーザ端末を選択する手段とを有し、
上流ノードとして動作するユーザ端末は、
記憶しているトポロジ情報に対して、下流ノードに相当するユーザ端末との接続に従って更新し、かつ上位の上流ノードに相当するユーザ端末から送信されたトポロジ情報を併合する手段と、
下流ノードとして接続された全てのユーザ端末に対して、前記トポロジ情報を送信する手段とを有することを特徴とする電子機器
In a network constructed by interconnecting a plurality of user terminals, between each user terminal, a user terminal as an upstream node transmits stream data, and a user terminal as a downstream node receives stream data. Electronic devices constituting each of them,
Each of the user terminals is
Means for storing topology information for recognizing a connection relationship between an upstream node and a downstream node, including information for recognizing a connection destination upstream node as a downstream node;
Means for exchanging the topology information between user terminals;
Means for transmitting and receiving the stream data;
User terminals that operate as downstream nodes
Means for requesting connection to a user terminal corresponding to an upstream node;
Means for receiving the topology information;
Means for selecting, from the received topology information, a user terminal corresponding to an upstream node that requests connection;
User terminals that operate as upstream nodes
Means for updating the stored topology information in accordance with the connection with the user terminal corresponding to the downstream node and merging the topology information transmitted from the user terminal corresponding to the upper upstream node;
An electronic apparatus comprising: means for transmitting the topology information to all user terminals connected as downstream nodes .
前記各ユーザ端末は、
上流ノードまたは下流ノードに相当するユーザ端末との接続切断に応じて、前記トポロジ情報を更新する手段を有することを特徴とする請求項16に記載の電子機器
Each of the user terminals is
17. The electronic apparatus according to claim 16 , further comprising means for updating the topology information in response to disconnection of a user terminal corresponding to an upstream node or a downstream node .
下流ノードとして動作するユーザ端末は、
既存の上流ノードに相当するユーザ端末との接続切断に応じて、前記トポロジ情報から新たな上流ノードに相当するユーザ端末を選択する手段と、
前記選択した上流ノードに相当するユーザ端末に対して、接続を要求する手段と
を有することを特徴とする請求項16または請求項17のいずれか1項に記載の電子機器
User terminals that operate as downstream nodes
Means for selecting a user terminal corresponding to a new upstream node from the topology information in response to disconnection from a user terminal corresponding to an existing upstream node;
Means for requesting connection to the user terminal corresponding to the selected upstream node;
Electronic device according to any one of claims 16 or claim 17 characterized in that it has a.
上流ノードとして動作するユーザ端末は、
下流ノードに相当するユーザ端末からの接続要求に応じて接続認証処理を実行する手段を有することを特徴とする請求項16に記載の電子機器
User terminals that operate as upstream nodes
The electronic device according to claim 16 , further comprising means for executing connection authentication processing in response to a connection request from a user terminal corresponding to a downstream node .
下流ノードとして動作するユーザ端末は、
前記上流ノードに相当するユーザ端末から受信した前記ストリームデータを再生する手段を有することを特徴とする請求項16から請求項19のいずれか1項に記載の電子機器
User terminals that operate as downstream nodes
The electronic device according to any one of claims 16 to 19, further comprising means for reproducing the stream data received from a user terminal corresponding to the upstream node .
JP2001364944A 2001-11-29 2001-11-29 Stream data distributed delivery method and system Expired - Fee Related JP3955989B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001364944A JP3955989B2 (en) 2001-11-29 2001-11-29 Stream data distributed delivery method and system
US10/184,415 US20030101253A1 (en) 2001-11-29 2002-06-27 Method and system for distributing data in a network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001364944A JP3955989B2 (en) 2001-11-29 2001-11-29 Stream data distributed delivery method and system

Publications (3)

Publication Number Publication Date
JP2003169089A JP2003169089A (en) 2003-06-13
JP2003169089A5 JP2003169089A5 (en) 2005-07-21
JP3955989B2 true JP3955989B2 (en) 2007-08-08

Family

ID=19175055

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001364944A Expired - Fee Related JP3955989B2 (en) 2001-11-29 2001-11-29 Stream data distributed delivery method and system

Country Status (1)

Country Link
JP (1) JP3955989B2 (en)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11650784B2 (en) 2003-07-28 2023-05-16 Sonos, Inc. Adjusting volume levels
US8234395B2 (en) 2003-07-28 2012-07-31 Sonos, Inc. System and method for synchronizing operations among a plurality of independently clocked digital data processing devices
US9207905B2 (en) 2003-07-28 2015-12-08 Sonos, Inc. Method and apparatus for providing synchrony group status information
US11294618B2 (en) 2003-07-28 2022-04-05 Sonos, Inc. Media player system
US8290603B1 (en) 2004-06-05 2012-10-16 Sonos, Inc. User interfaces for controlling and manipulating groupings in a multi-zone media system
US11106425B2 (en) 2003-07-28 2021-08-31 Sonos, Inc. Synchronizing operations among a plurality of independently clocked digital data processing devices
US8086752B2 (en) 2006-11-22 2011-12-27 Sonos, Inc. Systems and methods for synchronizing operations among a plurality of independently clocked digital data processing devices that independently source digital data
US11106424B2 (en) 2003-07-28 2021-08-31 Sonos, Inc. Synchronizing operations among a plurality of independently clocked digital data processing devices
US9374607B2 (en) 2012-06-26 2016-06-21 Sonos, Inc. Media playback system with guest access
US9977561B2 (en) 2004-04-01 2018-05-22 Sonos, Inc. Systems, methods, apparatus, and articles of manufacture to provide guest access
JP4824914B2 (en) * 2004-04-26 2011-11-30 株式会社エヌ・ティ・ティ・ドコモ Network recovery system, network recovery method and node
US8326951B1 (en) 2004-06-05 2012-12-04 Sonos, Inc. Establishing a secure wireless network with minimum human intervention
US8868698B2 (en) 2004-06-05 2014-10-21 Sonos, Inc. Establishing a secure wireless network with minimum human intervention
JP4701643B2 (en) 2004-07-08 2011-06-15 ブラザー工業株式会社 PROCESSING DEVICE, PROCESSING METHOD, PROCESSING PROGRAM, AND RECORDING MEDIUM
EP1768324A4 (en) 2004-07-13 2010-01-20 Brother Ind Ltd Distribution device, reception device, tree-type distribution system, information processing method, etc.
JP4428161B2 (en) 2004-07-16 2010-03-10 ブラザー工業株式会社 Connection state control device, connection state control method, and connection state control program
JP4496872B2 (en) * 2004-07-16 2010-07-07 ブラザー工業株式会社 Connection mode control device and relay device, connection mode control method and relay method, connection mode control program, and relay device program
WO2006008885A1 (en) * 2004-07-16 2006-01-26 Brother Kogyo Kabushiki Kaisha Connection mode control device, connection mode control method, and connection mode control program
JP4370995B2 (en) 2004-07-26 2009-11-25 ブラザー工業株式会社 Connection mode setting device, connection mode setting method, connection mode control device, connection mode control method, etc.
US7174385B2 (en) * 2004-09-03 2007-02-06 Microsoft Corporation System and method for receiver-driven streaming in a peer-to-peer network
JP4498871B2 (en) * 2004-09-22 2010-07-07 株式会社エヌ・ティ・ティ・ドコモ Wireless communication device
JP4636864B2 (en) * 2004-11-30 2011-02-23 株式会社エヌ・ティ・ティ・ドコモ Relay equipment
WO2006120946A1 (en) 2005-05-10 2006-11-16 Brother Kogyo Kabushiki Kaisha Tree-type network system, node device, broadcast system, broadcast method, etc.
JP4544072B2 (en) 2005-07-20 2010-09-15 ブラザー工業株式会社 Node device, computer program, information distribution system, and network participation method
JP4668013B2 (en) 2005-08-30 2011-04-13 パナソニック株式会社 Content distribution method, content distribution server, communication terminal device, and content distribution system
JP4586723B2 (en) * 2005-12-19 2010-11-24 ブラザー工業株式会社 CONTENT DISTRIBUTION SYSTEM, CONTENT DISTRIBUTION METHOD, TERMINAL DEVICE USED FOR THE SAME, AND PROGRAM THEREOF
JP2007235471A (en) * 2006-02-28 2007-09-13 Brother Ind Ltd System and method for distributing contents, terminal device and program therefor
US9202509B2 (en) 2006-09-12 2015-12-01 Sonos, Inc. Controlling and grouping in a multi-zone media system
US8483853B1 (en) 2006-09-12 2013-07-09 Sonos, Inc. Controlling and manipulating groupings in a multi-zone media system
US8788080B1 (en) 2006-09-12 2014-07-22 Sonos, Inc. Multi-channel pairing in a media system
JP4894550B2 (en) 2007-02-19 2012-03-14 富士通株式会社 Content distribution system, server apparatus, and content distribution method
JP5255654B2 (en) * 2008-01-10 2013-08-07 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. Multi-directional peer-to-peer media streaming
US8560633B2 (en) * 2010-01-11 2013-10-15 Tangome, Inc. Communicating in a peer-to-peer computer environment
US11429343B2 (en) 2011-01-25 2022-08-30 Sonos, Inc. Stereo playback configuration and control
US11265652B2 (en) 2011-01-25 2022-03-01 Sonos, Inc. Playback device pairing
US9729115B2 (en) 2012-04-27 2017-08-08 Sonos, Inc. Intelligently increasing the sound level of player
US9008330B2 (en) 2012-09-28 2015-04-14 Sonos, Inc. Crossover frequency adjustments for audio speakers
US9226073B2 (en) 2014-02-06 2015-12-29 Sonos, Inc. Audio output balancing during synchronized playback
US9226087B2 (en) 2014-02-06 2015-12-29 Sonos, Inc. Audio output balancing during synchronized playback
US10248376B2 (en) 2015-06-11 2019-04-02 Sonos, Inc. Multiple groupings in a playback system
US10712997B2 (en) 2016-10-17 2020-07-14 Sonos, Inc. Room association based on name
CN112000453A (en) * 2020-08-25 2020-11-27 支付宝(杭州)信息技术有限公司 Scheduling method and system of stream computing system

Also Published As

Publication number Publication date
JP2003169089A (en) 2003-06-13

Similar Documents

Publication Publication Date Title
JP3955989B2 (en) Stream data distributed delivery method and system
US9391786B1 (en) Systems and methods for setting up a session in a collaborative communication system
US20030101253A1 (en) Method and system for distributing data in a network
CN101594594B (en) Local area network system for realizing streaming media switch among peer-to-peer devices and realization method thereof
CN101753976B (en) Method for controlling interactive web TV business as well as equipment and system thereof
CN101453524B (en) Multimedia service implementing method
CN100583801C (en) A method, system and switching device for dynamically establishing multicast virtual LAN
JPH0936917A (en) Multimedia conference call to provide individual communication terminal with adjustable bandwidth
CN111131759B (en) Real-time multimedia transmission system and use method thereof
JP3795507B2 (en) Communication relay device
JP5877470B2 (en) Commercial communication system and method
JPH04287450A (en) Digital communication system having inteligent user terminal
JP2004248165A (en) Session and media relay method, transfer method, and its program and recording medium
CN103036882B (en) P2P terminal of network media phone
US10320854B1 (en) Systems and methods for setting up a session in a collaborative communication system
JP4770294B2 (en) Connection management device, connection management method, connection management program, broadcast system, and broadcast method
JP2004015692A (en) Method and system for sharing/processing status information between communication applications
JP3682439B2 (en) Data communication system and method, server device, client device, and program
JP4037432B2 (en) Telephone exchange system, telephone exchange method, and telephone exchange program
JP4474244B2 (en) Service providing system and service providing method
JP4826338B2 (en) CUG service system, group management apparatus, group management apparatus control program, and group management method
JP5022393B2 (en) User terminal, user terminal program, and distribution tree connection switching method
JP4245938B2 (en) Communication support method and communication support system apparatus
JP2000253073A (en) Network system
JP2004088456A (en) Image distribution system

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041126

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041126

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20041126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060501

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060516

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060718

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061107

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070320

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070417

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100518

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110518

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120518

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120518

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130518

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees