(57)【要約】ストリーミング・データの送信及びダウンロード方法が開示される。この方法は、（ａ）複数のノードとの接続を確立する段階と、（ｂ）接続が確立された複数のノードにストリーミング・データのサブブロックの要求を送信し、サブブロックをダウンロードする段階と、（ｃ）確立された接続のダウンロード状態をモニタリングする段階と、（ｄ）モニタリング結果に基づいて、接続が確立された複数のノードのうちの一部からダウンロードされるべきサブブロックを再分配する段階とを備え、ブロックに含まれる全てのサブブロックがダウンロードされると、次のブロックに含まれるサブブロックをダウンロードするために、段階（ｂ）〜段階（ｅ）は反復される。
2006513676.tif 000002
【特許請求の範囲】
【請求項１】
ストリーミング・データのダウンロード方法であって、
（ａ）  複数のノードとの接続を確立する段階と、
（ｂ）  接続が確立された前記複数のノードにストリーミング・データのサブブロックの要求を送信して、該サブブロックをダウンロードする段階と、
（ｃ）  確立された接続のダウンロード状態をモニタリングする段階と、
（ｄ）  前記モニタリングの結果に基づいて、接続が確立された前記複数のノードのうちの一部のノードからダウンロードされるべきサブブロックを再分配する段階と、を備え、
ブロックに含まれる全てのサブブロックがダウンロードされると、次のブロックに含まれるサブブロックをダウンロードするために、前記段階（ｂ）〜段階（ｄ）は反復される、ストリーミング・データのダウンロード方法。
【請求項２】
請求項１に記載の方法であって、更に、接続が確立された前記複数のノードのそれぞれからダウンロードされるべきサブブロックを決定する段階を備える、ストリーミング・データのダウンロード方法。
【請求項３】
請求項１に記載の方法において、前記段階（ｃ）は、サブブロックのダウンロードが完了した接続が存在するか否かをモニタリングする段階を備える、ストリーミング・データのダウンロード方法。
【請求項４】
請求項２に記載の方法において、前記複数のノードのそれぞれからダウンロードされるべきサブブロックは、接続状態の評価指数を計算することにより決定される、ストリーミング・データのダウンロード方法。
【請求項５】
請求項４に記載の方法において、前記接続状態の評価指数は、前記複数のノードのそれぞれに伴うラウンド・トリップ時間と前記複数のノードのそれぞれからの平均ダウンロード速度とにより構成されるグループから選択された情報を利用して計算される、ストリーミング・データのダウンロード方法。
【請求項６】
請求項３に記載の方法において、前記段階（ｄ）は、サブブロックのダウンロードが完了した接続が存在する場合、サブブロックのダウンロードが完了した接続と、サブブロックのダウンロードが完了していない接続のうちの一部との間でサブブロックを再分配する段階を備える、ストリーミング・データのダウンロード方法。
【請求項７】
請求項６に記載の方法において、前記段階（ｄ）は、サブブロックのダウンロードが完了した接続と、サブブロックのダウンロードが完了していない接続のうちのダウンロード率が最低の接続との間でサブブロックを再分配する段階を備える、ストリーミング・データのダウンロード方法。
【請求項８】
請求項７に記載の方法において、サブブロックのダウンロードが完了した接続と、ダウンロード率が最低の接続との間でサブブロックを再分配する段階は、
サブブロックのダウンロードが完了した接続のダウンロード速度と、ダウンロード率が最低の接続のダウンロード速度とを判断する段階と、
ダウンロード率が最低の接続において、ダウンロードされるべき残りのサブブロックの数を判断する段階と、
サブブロックの再分配が必要か否かを判断する段階と、
サブブロックの再分配が必要な場合は、前記ダウンロード速度の比に基づいて、サブブロックのダウンロードが完了した接続と、ダウンロード率が最低の接続との間で前記残りのサブブロックを再配分する段階とを備える、ストリーミング・データのダウンロード方法。
【請求項９】
請求項１に記載の方法であって、更に、接続の確立に失敗したノードの情報をブラックリスト・キューに保存する段階を備える、ストリーミング・データのダウンロード方法。
【請求項１０】
請求項２に記載の方法であって、ノードの状態情報を受信する段階を備えており、前記複数のノードのそれぞれからダウンロードされるべきサブブロックは前記ノードの状態情報を利用して決定される、ストリーミング・データのダウンロード方法。
【請求項１１】
請求項２に記載の方法において、前記複数のノードのそれぞれからダウンロードされるべきサブブロックは、ダウンロードの初期状態には、前記複数のノードの状態情報によって決定され、前記複数のノードのそれぞれからのダウンロード速度が判断された後には、前記複数のノードのそれぞれに伴うラウンド・トリップ時間と前記複数のノードのそれぞれからの平均ダウンロード速度とにより構成されたグループから選択された情報を利用して計算される接続状態の評価指数を用いて決定される、ストリーミング・データのダウンロード方法。
【請求項１２】
請求項１０に記載の方法において、前記複数のノードとの接続の確立は、前記段階（ａ）における前記複数のノードの状態情報を利用して遂行される、ストリーミング・データのダウンロード方法。
【請求項１３】
請求項１に記載の方法であって、更に、ダウンロードされたサブブロックのチェックサム値を利用してダウンロード・エラーを判断する段階を備える、ストリーミング・データのダウンロード方法。
【請求項１４】
請求項１に記載の方法であって、更に、サブブロックが再分配された後、該再分配結果に基づいて、対応する複数のノードにサブブロックの要求を送信して、再分配されたサブブロックをダウンロードする段階を備える、ストリーミング・データのダウンロード方法。
【請求項１５】
請求項１に記載の方法であって、更に、前記複数のノードからのサブブロックのダウンロードが失敗した場合、単一のサーバに接続することによりストリーミング・データをダウンロードする段階を備える、ストリーミング・データのダウンロード方法。
【請求項１６】
請求項１に記載の方法であって、更に、
接続が確立された複数のノードのうち、データを送信していない複数のノードの状態情報をモニタリングする段階と、
データを送信している複数のノードのうちの一部と、データを送信していない複数のノードのうちの一部との間でダウンロードされるべきサブブロックを再分配する段階を備える、ストリーミング・データのダウンロード方法。
【請求項１７】
ネットワークを通じて接続制御サーバと複数の使用者クライアントが接続されているシステムにおいて、前記複数の使用者クライアントにインストールされた通信エージェント・プログラムであって、
前記接続制御サーバに対し、使用者クライアントに保存されているコンテンツ情報及び使用者クライアントの識別情報を提供し、使用者がコンテンツを要求する場合、コンテンツ要求情報を前記接続制御サーバに送信するエージェント管理モジュールと、
要求されたコンテンツを保存しているノードのリスト情報を受信して、保存するノード情報管理モジュールと、
前記ノードのリスト情報を利用して複数のノードとの接続を確立し、接続が確立された複数のノードのそれぞれからダウンロードされるべきサブブロックを決定して要求し、サブブロックのダウンロードの間にダウンロード状態をモニタリングすることによって、接続された前記複数のノードの一部からダウンロードされるべきサブブロックを再分配する接続制御モジュールと、
ブロックに含まれる全てのサブブロックがダウンロードされているか否かを判断し、ブロックに含まれる全てのサブブロックがダウンロードされている場合は、次のブロックに含まれるサブブロックを要求してダウンロードするサブブロック管理モジュールと、
を備える通信エージェント・プログラム。
【請求項１８】
請求項１７に記載の通信エージェント・プログラムにおいて、前記接続制御モジュールは、サブブロックのダウンロードが完了した接続と、サブブロックのダウンロードが完了していない接続のうちの一部との間でサブブロックを再分配する、通信エージェント・プログラム。
【請求項１９】
請求項１８に記載の通信エージェント・プログラムにおいて、
前記接続制御モジュールは、
前記ノード・リストに含まれる複数のノードとの接続を確立する接続確立モジュールと、
接続が確立された複数のノードとの接続状態を判断する接続状態判断モジュールと、
前記接続状態の情報を利用して、接続が確立された複数のノードからダウンロードされるべきサブブロックを分配するサブブロック分配モジュールと、
要求されたサブブロックの送信を完了したノードが存在する場合、サブブロックのダウンロードが完了した接続と、ダウンロード率が最低の接続との間のサブブロックの再分配を前記サブブロック分配モジュールに要求するダウンロード状態モニタリング・モジュールとを備え、
前記サブブロック分配モジュールは、前記ダウンロード状態モニタリング・モジュールによるサブブロックの再分配の要求に応答して、ダウンロード速度に基づいて、サブブロックのダウンロードが完了した接続と、ダウンロード率が最低の接続との間で、ダウンロードされるべきサブブロックを再分配する、通信エージェント・プログラム。
【請求項２０】
請求項１９に記載の通信エージェント・プログラムおいて、前記接続状態判断モジュールは、前記複数のノードのそれぞれに伴うラウンド・トリップ時間と前記複数のノードのそれぞれからの平均ダウンロード速度とにより構成されたグループから選択された情報を利用して接続状態を判断する、通信エージェント・プログラム。
【請求項２１】
請求項１９に記載の通信エージェント・プログラムにおいて、前記接続状態判断モジュールは、前記接続制御サーバからノード状態情報を受信することにより、接続状態を判断する、通信エージェント・プログラム。
【請求項２２】
請求項１９に記載の通信エージェント・プログラムにおいて、前記接続確立モジュールは、前記接続制御サーバから提供されるノード状態情報を利用して接続の確立を試み、接続の確立に失敗した場合は、前記ノード状態情報を利用して別のノードとの接続を確立する、通信エージェント・プログラム。
【請求項２３】
請求項１９に記載の通信エージェント・プログラムにおいて、前記接続確立モジュールは、接続の確立に失敗した場合、接続の確立に失敗したノードの情報をブラックリスト・キューに保存する、通信エージェント・プログラム。
【請求項２４】
請求項１７に記載の通信エージェント・プログラムにおいて、前記サブブロック管理モジュールは、サブブロックのチェックサム値を利用してダウンロード・エラーを判断する、通信エージェント・プログラム。
【請求項２５】
請求項１７に記載の通信エージェント・プログラムであって、更に、前記ダウンロードされたストリーミング・データを、スクランブル状態で保存して管理するキャッシュ管理モジュールを備える通信エージェント・プログラム。
【請求項２６】
請求項２５に記載の通信エージェント・プログラムであって、更に、ブロックに含まれる全てのサブブロックがダウンロードされた場合、ブロック・データを前記キャッシュ管理モジュール又はストリーミング・データを再生するプレーヤーに提供するブロック管理モジュールを備える通信エージェント・プログラム。
【請求項２７】
請求項１７に記載の通信エージェント・プログラムであって、更に、前記接続制御サーバに予約要求情報を送信し、予約されたコンテンツ情報を管理する予約管理モジュールを備える通信エージェント・プログラム。
【請求項２８】
請求項１７に記載の通信エージェント・プログラムにおいて、前記接続制御モジュールは、接続が確立された複数のノードのうちのデータを送信していないノードの状態をモニタリングし、該モニタリング結果に基づいて、データを送信していない複数のノードのうちの一部と、データを送信している複数のノードのうちの一部との間でサブブロックを再分配する、通信エージェント・プログラム。
【請求項２９】
使用者クライアントにインストールされ、複数のコンテンツ・サーバと少なくとも一つの接続制御サーバとを含むシステムから、ストリーミング・データをダウンロードする通信エージェント・プログラムであって、
前記接続制御サーバに対して、データ送信の要求を送信するデータ要求モジュールと、
要求されたデータをダウンロードするコンテンツ・サーバのリストを受信して保存するノード情報管理モジュールと、
前記コンテンツ・サーバのリストに含まれる複数のコンテンツ・サーバとの接続を確立して、接続が確立された前記複数のコンテンツ・サーバからダウンロードされるべきストリーミング・データのサブブロックを要求し、接続された複数のコンテンツ・サーバからのサブブロックのダウンロードの間にダウンロード状態をモニタリングすることにより、接続が確立された前記複数のコンテンツ・サーバの一部に、ダウンロードされるべきサブブロックを再分配する接続制御モジュールと、
ブロックに含まれる全てのサブブロックがダウンロードされているか否かを判断し、ブロックに含まれる全てのサブブロックがダウンロードされている場合は、次のブロックに含まれるサブブロックを要求してダウンロードするサブブロック管理モジュールと、
を備える通信エージェント・プログラム。
【請求項３０】
請求項２９に記載の通信エージェント・プログラムにおいて、前記接続制御モジュールは、サブブロックのダウンロードが完了した接続と、サブブロックのダウンロードが完了していない接続の一部との間でサブブロックを再分配する、通信エージェント・プログラム。
【請求項３１】
請求項３０に記載の通信エージェント・プログラムにおいて、前記接続制御モジュールは、
前記コンテンツ・サーバのリストに含まれる複数のコンテンツ・サーバとの接続を確立する接続確立モジュールと、
接続された複数のコンテンツ・サーバの接続状態を判断する接続状態判断モジュールと、
前記接続状態の情報を利用して、前記接続された複数のコンテンツ・サーバのそれぞれからダウンロードされるべきサブブロックを分配するサブブロック分配モジュールと、
サブブロックのダウンロードが完了した接続が存在する場合、サブブロックのダウンロードが完了した接続と、ダウンロード率が最低の接続との間のサブブロックの再分配を要求するダウンロード状態モニタリング・モジュールとを備え、
前記サブブロック分配モジュールは、前記ダウンロード状態モニタリング・モジュールの要求に応答して、サブブロックのダウンロードが完了した接続及びダウンロード率が最低の接続のダウンロード速度に基づいて、サブブロックを再分配する、通信エージェント・プログラム。
【請求項３２】
請求項３１に記載の通信エージェント・プログラムにおいて、前記接続状態判断モジュールは、前記接続制御サーバから提供されるコンテンツ・サーバ状態情報を利用して接続状態を判断する、通信エージェント・プログラム。
【請求項３３】
ネットワークを通じて複数の使用者クライアントに接続され、使用者クライアントが他の複数の使用者クライアントと接続してストリーミング・データをダウンロードするように、前記複数の使用者クライアント間の接続を制御する接続制御サーバであって、
接続された前記複数の使用者クライアントに保存されたコンテンツ情報及び接続された前記複数の使用者クライアントのアドレス情報を受信し、コンテンツを要求した使用者クライアントに、要求されたコンテンツを保存するノードの情報を提供するメッシュ管理モジュールと、
前記複数の使用者クライアントのそれぞれに保存されたコンテンツ情報及び前記複数の使用者クライアントのそれぞれのアドレス情報を保存するメッシュ情報データベースとを備え、
前記複数の使用者クライアントには、通信エージェント・プログラムがインストールされており、該通信エージェント・プログラムは、前記ノードの情報を利用して、複数のノードとの接続を確立し、接続された複数のノードに対して、ダウンロードされるべきストリーミング・データのサブブロックの要求を送信し、かつ接続された前記複数のノードのそれぞれのダウンロード状態をモニタリングすることにより、ダウンロードされるべきサブブロックを再分配するように、前記複数の使用者クライアントを制御する、接続制御サーバ。
【請求項３４】
請求項３３に記載の接続制御サーバであって、更に、使用者を認証して課金情報を処理する認証モジュールを備える、接続制御サーバ。
【請求項３５】
請求項３３に記載の接続制御サーバであって、更に、登録された使用者の情報を保存する使用者データベースと、ストリーミング・データのメタ情報を保存するメタ情報データベースを備える、接続制御サーバ。
【請求項３６】
請求項３３に記載の接続制御サーバにおいて、前記メッシュ管理モジュールは、前記複数のノードのそれぞれの状態情報を受信し、該状態情報に前記ノード情報を提供する、接続制御サーバ。
【請求項３７】
ネットワークを通じて複数の使用者クライアントと複数のコンテンツ・サーバとに接続され、使用者クライアントが少なくとも二つのコンテンツ・サーバと接続してストリーミング・データをダウンロードするように、前記複数の使用者クライアントと前記複数のコンテンツ・サーバとの間の接続を制御する接続制御サーバであって、
接続された前記複数のコンテンツ・サーバから状態情報を受信して、前記複数のコンテンツ・サーバのそれぞれの状態を判断するサーバ状態判断モジュールと、
使用者クライアントからコンテンツ要求情報を受信すると、要求されたコンテンツのストリーミング・データを送信するためのサーバ・リスト情報を提供するサーバ・リスト提供モジュールとを備え、
前記複数の使用者クライアントには、通信エージェント・プログラムがインストールされており、該通信エージェント・プログラムは、前記サーバ・リスト情報を利用して、少なくとも二つのコンテンツ・サーバとの接続を確立し、接続された前記複数のコンテンツ・サーバのそれぞれからダウンロードされるべきストリーミング・データのサブブロックを決定して要求し、接続された前記複数のノードのそれぞれからのサブブロックのダウンロード状態をモニタリングすることにより、ダウンロードされるべきサブブロックを再分配するように、前記複数の使用者クライアントを制御する、接続制御サーバ。
【請求項３８】
請求項３７に記載の接続制御サーバにおいて、前記複数のコンテンツ・サーバから提供される状態情報は、帯域幅情報、ＣＰＵ使用率情報、メモリ使用率情報、接続者数、及びファイルのＩ／Ｏ情報により構成されたグループから選択される、接続制御サーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリーミング・データの送信及びダウンロード方法に関し、より詳細には、複数の分散されたノードを通じてストリーミング・データを送信及びダウンロードする方法に関する。
【背景技術】
【０００２】
従来、インターネットを通じて提供されるコンテンツは、文書又は画像のような小サイズのデータが大部分であった。しかしながら、データの送信技術及び機器の発展によってマルチメディア・コンテンツの提供も活発に行われている。このようなマルチメディア・コンテンツは、ストリーミング方式を通じて使用者クライアントに送信される。
【０００３】
従来、ストリーミング・データは、一つのサーバから使用者クライアントに送信されるのが一般的なことであった。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
このようなストリーミング・データの送信はリアルタイムでなければならない。しかしながら、従来は、ストリーミング・データが一つのサーバから使用者クライアントに送信されるため、サーバの負荷がより大きくなった場合や、接続状態が不安定な場合に、ストリーミング・データの送信遅延が頻繁に発生していた。ストリーミング・データは、ダウンロードされると直ちにプレーヤーにより再生されるべきであるので、その送信遅延は、一般的なデータのファイルの場合とは異なり、ＱｏＳ（Quality of Service）に著しい影響を与える。
【０００５】
一方、従来のファイル・ダウンロード方法について、米国特許第６，３３９，７８５号は、複数のサーバを通じてファイルをダウンロードする方法を開示している。米国特許第６，３３９，７８５号によれば、全てのファイルを１／Ｎに分割して、Ｎ個のサーバを通じてファイルをダウンロードすることによって、一つの接続に障害が発生しても安定的にファイルを送信することができる。
【０００６】
しかしながら、このようなダウンロード方式では、全てのデータのダウンロードを完了してはじめて、当該ファイルを使うことができる。従って、ダウンロードされると直ちに再生が必要なストリーミング・データに、米国特許第６，３３９，７８５号のダウンロード方法を適用することはできない。
【課題を解決するための手段】
【０００７】
本発明の目的は、上記のような従来技術の問題点を解決するため、複数のノードを通じてストリーミング・データを送信及びダウンロードする方法を提供することにある。
本発明の別の目的は、Ｐ２Ｐ（ピア・ツー・ピア）ネットワークにおいて、複数の使用者クライアントからストリーミング・データを安定的にダウンロードする方法、及び使用者クライアントにインストールされる通信エージェント・プログラムを提供することにある。
【０００８】
本発明のさらに別の目的は、複数のサーバを備えたファイル送信システムにおいてストリーミング・データを安定的にダウンロードする方法、及び使用者クライアントにインストールされる通信エージェント・プログラムを提供することにある。
【０００９】
本発明のさらに別の目的は、ストリーミング・データをブロック及びサブブロックに分割し、複数の接続からデータをダウンロードする方法を提供することにある。
上記の目的を達成するために、本発明の一つの望ましい実施形態によれば、（ａ）複数のノードとの接続を確立する段階と、（ｂ）接続が確立された複数のノードにストリーミング・データのサブブロックを要求を送信して、サブブロックをダウンロードする段階と、（ｃ）確立された接続のダウンロード状態をモニタリングする段階と、（ｄ）モニタリングの結果に基づいて、接続が確立された複数のノードのうちの一部のノードからダウンロードされるべきサブブロックを再分配する段階とを備え、ブロックに含まれる全てのサブブロックがダウンロードされると、次のブロックに含まれるサブブロックをダウンロードするために、段階（ｂ）〜段階（ｄ）は反復される、ストリーミング・データのダウンロード方法が提供される。
【００１０】
本発明は、更に、接続が確立された複数のノードのそれぞれからダウンロードされるべきストリーミング・データのサブブロックを決定する段階を備え得る。
段階（ｃ）は、サブブロックのダウンロードが完了した接続が存在するか否かをモニタリングする段階を備え得る。
【００１１】
複数のノードのそれぞれからダウンロードされるべきサブブロックは、接続状態の評価指数を計算することにより決定され得る。
接続状態の評価指数は、複数のノードのそれぞれに伴うラウンド・トリップ時間と複数のノードのそれぞれからの平均ダウンロード速度とにより構成されるグループから選択された情報を利用して計算され得る。
【００１２】
段階（ｄ）は、サブブロックのダウンロードが完了した接続が存在する場合、サブブロックのダウンロードが完了した接続と、サブブロックのダウンロードが完了していない接続のうちの一部との間でサブブロックを再分配する段階を備え得る。
【００１３】
段階（ｄ）は、サブブロックのダウンロードが完了した接続と、サブブロックのダウンロードが完了していない接続のうちのダウンロード率が最低の接続との間でサブブロックを再分配する段階を備え得る。
【００１４】
サブブロックのダウンロードが完了した接続と、ダウンロード率が最低の接続との間でサブブロックを再分配する段階は、サブブロックのダウンロードが完了した接続のダウンロード速度と、ダウンロード率が最低の接続のダウンロード速度とを判断する段階と、ダウンロード率が最低の接続において、ダウンロードされるべき残りのサブブロックの数を判断する段階と、サブブロックの再分配が必要か否かを判断する段階と、サブブロックの再分配が必要な場合は、ダウンロード速度の比に基づいて、サブブロックのダウンロードが完了した接続と、ダウンロード率が最低の接続との間で残りのサブブロックを再分配する段階とを備え得る。
【００１５】
本発明の別の実施形態によれば、ネットワークを通じて接続制御サーバと複数の使用者クライアントとが接続されているシステムにおいて、複数の使用者クライアントにインストールされた通信エージェント・プログラムであって、接続制御サーバに対し、使用者クライアントに保存されているコンテンツ情報及び使用者クライアントの識別情報を提供し、使用者がコンテンツを要求する場合、コンテンツ要求情報を接続制御サーバに送信するエージェント管理モジュールと、要求されたコンテンツを保存しているノードのリスト情報を受信して、保存するノード情報管理モジュールと、ノードのリスト情報を利用して複数のノードとの接続を確立し、接続が確立された複数のノードのそれぞれからダウンロードされるべきサブブロックを決定して要求し、サブブロックのダウンロードの間にダウンロード状態をモニタリングすることによって、接続された複数のノードの一部からダウンロードされるべきサブブロックを再分配する接続制御モジュールと、ブロックに含まれる全てのサブブロックがダウンロードされているか否かを判断し、ブロックに含まれる全てのサブブロックがダウンロードされている場合は、次のブロックに含まれるサブブロックを要求してダウンロードするサブブロック管理モジュールとを備える通信エージェント・プログラムが提供される。
【００１６】
本発明の別の実施形態によれば、使用者クライアントにインストールされ、複数のコンテンツ・サーバと少なくとも一つの接続制御サーバとを含むシステムから、ストリーミング・データをダウンロードする通信エージェント・プログラムであって、接続制御サーバに対して、データ送信の要求を送信するデータ要求モジュールと、要求されたデータをダウンロードするコンテンツ・サーバのリストを受信して保存するノード情報管理モジュールと、コンテンツ・サーバのリストに含まれる複数のコンテンツ・サーバとの接続を確立して、接続が確立された複数のコンテンツ・サーバからダウンロードされるべきストリーミング・データのサブブロックを要求し、接続された複数のコンテンツ・サーバからのサブブロックのダウンロードの間にダウンロード状態をモニタリングすることにより、接続が確立された複数のコンテンツ・サーバの一部にダウンロードされるべきサブブロックを再分配する接続制御モジュールと、ブロックに含まれる全てのサブブロックがダウンロードされているか否かを判断し、ブロックに含まれる全てのサブブロックが受信されている場合、次のブロックに含まれるサブブロックを要求してダウンロードするサブブロック管理モジュールとを備える通信エージェント・プログラムが提供される。
【００１７】
本発明の別の実施形態によれば、ネットワークを通じて複数の使用者クライアントに接続され、使用者クライアントが他の複数の使用者クライアントと接続してストリーミング・データをダウンロードするように、複数の使用者クライアント間の接続を制御する接続制御サーバであって、接続された複数の使用者クライアントに保存されたコンテンツ情報及び接続された複数の使用者クライアントのアドレス情報を受信し、コンテンツを要求した使用者クライアントに、要求されたコンテンツを保存するノードの情報を提供するメッシュ制御モジュールと、複数の使用者クライアントのそれぞれに保存されたコンテンツ情報及び複数の使用者クライアントのそれぞれのアドレス情報を保存するメッシュ情報データベースとを備え、複数の使用者クライアントには通信エージェント・プログラムがインストールされており、通信エージェント・プログラムは、ノードの情報を利用して、複数のノードとの接続を確立し、接続された複数のノードに対して、ダウンロードされるべきストリーミング・データのサブブロックの要求を送信し、かつ接続された複数のノードのそれぞれのダウンロード状態をモニタリングすることにより、ダウンロードされるべきサブブロックを再分配するように、複数の使用者クライアントを制御する、接続制御サーバが提供される。
【００１８】
本発明の別の実施形態によれば、ネットワークを通じて複数の使用者クライアントと複数のコンテンツ・サーバとに接続され、使用者クライアントが少なくとも二つのコンテンツ・サーバと接続してストリーミング・データをダウンロードするように、複数の使用者クライアントと複数のコンテンツ・サーバとの間の接続を制御する接続制御サーバであって、接続された複数のコンテンツ・サーバから状態情報を受信して、複数のコンテンツ・サーバのそれぞれの状態を判断するサーバ状態判断モジュールと、使用者クライアントからコンテンツ要求情報を受信すると、要求されたコンテンツのストリーミング・データを送信するためのサーバのリスト情報を提供するサーバ・リスト提供モジュールとを備え、複数の使用者クライアントには通信エージェント・プログラムがインストールされており、通信エージェントは、サーバ・リスト情報を利用して、少なくとも二つのコンテンツ・サーバに接続を確立し、接続された複数のコンテンツ・サーバのそれぞれからダウンロードされるべきストリーミング・データのサブブロックを決定して要求し、接続された複数のノードそれぞれからのサブブロックのダウンロード状態をモニタリングすることにより、ダウンロードされるべきサブブロックを再分配するように、複数の使用者クライアントを制御する、接続制御サーバが提供される。
【発明を実施するための最良の形態】
【００１９】
以下の詳細な実施形態に基づいて、本発明を説明する。
図１は、本発明が適用されるストリーミング・データの送信システムの概略的構成である。
【００２０】
図１を参照すると、本発明によるストリーミング・データの送信システムは、複数のノード（１００，１０２，１０４，１０６，１０８，１１０）と、使用者クライアント（１１２）を含むことができる。
【００２１】
使用者クライアントは、選択された複数のノード（１０２，１０６，１０８）との接続を確立して、ストリーミング・データをダウンロードする。
図１において、複数のノード（１００，１０２，１０４，１０６，１０８，１１０）は、コンテンツ・データを保存しており、使用者クライアントからのコンテンツ要求情報を受信した後、要求されたコンテンツのデータを使用者クライアントに送信する。ノードは、一般的に、コンテンツを送信するサーバであっても、別の使用者クライアントであってもよい。
【００２２】
使用者クライアント（１１２）は、複数のノード（１０２，１０６，１０８）にコンテンツ要求情報を送信し、当該ノード（１０２，１０６，１０８）からコンテンツ・データをダウンロードする。換言すれば、本発明によれば、複数のノードを通じて複数の経路からストリーミング・データをダウンロードする。
【００２３】
この時、使用者クライアントは、接続が確立されたのノードのそれぞれに異なるストリーミング・データの要求を送信し、その複数のノードからダウンロードしたストリーミング・データを組み合わせる。
【００２４】
図５は、本発明の一つの望ましい実施形態によるストリーミング・データの構造である。
図５を参照すると、本発明によるストリーミング・データは、複数のブロック（５００）から成り立っており、その複数のブロックのそれぞれは複数のサブブロック（５０２）から成り立つ。
【００２５】
ブロック及びサブブロックは、ストリーミング・データを区分するための論理的な単位であって、これとは異なる用語を使用することも可能であることは当業者にとって自明だろう。
【００２６】
一般的なファイルのダウンロードとは異なり、ストリーミング・データはダウンロードと同時に再生されなければならない。したがって、複数のサーバによるファイルのダウンロードのような一般的なダウンロード方法では、従来は、ファイルのデータ全体はＮ個のセグメントに分割され、そのセグメントのそれぞれは多重経路を通じてダウンロードされていたため、この方法をストリーミング・データのダウンロードに適用することはできない。多重経路を用いた従来のファイルのダウンロード方法によれば、ファイルのデータ全体がダウンロードされなければ当該ファイルを再生することはできない。一方、ストリーミング・データは、ダウンロードされると直ちに再生されるべきである。
【００２７】
したがって、本発明によれば、ストリーミング・データをブロック単位に分割して、ブロックに含まれるサブブロックを、多重経路を通じて並列／分散方式でダウンロードする。
【００２８】
例えば、図１のシステムにおいて、一つのブロックが１０個のサブブロックから成り立つ場合、使用者クライアント（１１２）は、第２ノード（１０２）に１〜３のサブブロック、第４ノード（１０６）に４〜７のサブブロック、第５ノード（１０８）に８〜１０のサブブロックを要求する。
【００２９】
使用者クライアント（１１２）は、一つのブロックに含まれている全てのサブブロックがダウンロードされると、次のブロックに含まれているサブブロックを要求する。一つのブロックの全てのデータがダウンロードされてから次のブロックのサブブロックがダウンロードされるため、多重経路を通じてデータをダウンロードしたとしても、データのダウンロードと同時にデータを再生することが可能である。
【００３０】
図５では、ストリーミング・データをブロック及びサブブロックに分割する場合のみを図示したが、サブブロックより小さい単位にストリーミング・データを分割し、その小さい単位でストリーミング・データを送信することが可能であるということは当業者にとって自明だろう。
【００３１】
使用者クライアントは、ノードのそれぞれに対しサブブロックの要求を送信する際、各ノードとの接続状態を判定する。例えば、第２ノード（１０２）、第４ノード（１０６）、及び第５ノード（１０８）のうちの第２ノード（１０２）の接続状態が最良であり、第５ノードの接続状態が最悪の場合、使用者クライアント（１１２）は、第２ノードには最大数のサブブロックの要求を送信し、第５ノードには最小数のサブブロックの要求を送信する。ノードとの状態を判定して、この判定結果によってサブブロックを要求する方法については、別の図面を参照して後に詳細に説明する。
【００３２】
サブブロックが複数の経路を通じてダウンロードされる場合、一部の接続におけるサブブロックのダウンロードが、別の接続におけるダウンロードよりも早く完了できる場合であっても、サブブロックのダウンロードを早く完了できる接続におけるデータは、別の接続のサブブロックのダウンロードが完了するまでは、送信されない。このようなアイドル接続（Idle Connection ）は送信効率を低下させる。
【００３３】
したがって、本発明によれば、複数の接続のうちの一つ接続においてサブブロックのダウンロードが完了すれば、未だに送信されていないサブブロックの一部を、サブブロックのダウンロードが完了した接続を通じてダウンロードするようにする。一つの接続においてサブブロックのダウンロードが完了した場合に、ダウンロードされるべきサブブロックを再分配する方法は、別の図面を参照して後に詳細に説明する。
【００３４】
図２は、本発明によるストリーミング・データの送信方法が適用されるネットワーク・システムの一例である。
図２は、Ｐ２Ｐ（ピア・ツー・ピア）方式によってストリーミング・データの送信方法が適用される場合を図示したものである。
【００３５】
図２を参照すると、本発明が適用されるネットワーク・システムは、接続制御サーバ（２００）と複数のクライアント（２０２，２０４，２０６，２０８，２１０，２１２，２１４，２１６）を含むことができる。
【００３６】
接続制御サーバ（２００）は、使用者クライアントからコンテンツ要求情報を受信し、そのコンテンツ要求情報に応答して、当該コンテンツを保存している別の使用者クライアントのアドレス情報を、コンテンツを要求した使用者クライアントに提供する。コンテンツを要求した使用者クライアントは、その提供されたアドレス情報を利用して、複数の経路を通じてコンテンツのストリーミング・データをダウンロードする。
【００３７】
例えば、使用者クライアント（２１０）が、映画「Ａ」を接続制御サーバ（２００）に要求する場合、接続制御サーバ（２００）は、映画「Ａ」を保存している使用者クライアントのアドレス情報を把握して、そのアドレス情報を、コンテンツを要求した使用者クライアント（２１０）に提供する。
【００３８】
ここで、アドレス情報は、ＩＰアドレス及びポート番号であればよい。別のアドレス識別情報も使用可能であることは当業者にとって自明だろう。
例えば、映画「Ａ」を保存している使用者クライアントが、図２における参照番号２０２，２０４，及び２０８であると仮定する。接続制御サーバがクライアント（２０２，２０４，２０８）のアドレス情報を、コンテンツを要求した使用者クライアント（２１０）に提供する場合、使用者クライアント（２１０）は、使用者クライアント（２０２，２０４，２０８）との接続の確立を試みる。
【００３９】
接続が確立されると、使用者クライアント（２１０）は、接続が確立されたクライアント（２０２，２０４，２０８）のそれぞれに異なるサブブロックを要求する。ブロックに含まれている全てのサブブロックがダウンロードされると、使用者クライアント（２１０）は次のブロックに含まれるサブブロックを要求する。送信されたストリーミング・データは使用者クライアントに保存されて、別のクライアントがそのストリーミング・データを要求した際は、その保存されたストリーミング・データは送信される。
【００４０】
使用者クライアントのそれぞれには、別のクライアント又は接続制御サーバとの通信のため通信エージェント・プログラムがインストールされる。本発明の実施形態では、通信エージェントがコンピュータのソフトウェアである場合を説明するが、通信エージェントが別個の装置やカードの形態に具現されてもよいことは当業者において自明だろう。
【００４１】
通信エージェントがインストールされたクライアントの電源が投入されるか、あるいは、エージェント・プログラムが実行されると、そのエージェント・プログラムは、使用者クライアントに保存されているコンテンツ情報を接続制御サーバ（２００）に送信して、接続制御サーバ（２００）は、その送信された情報を保存する。
【００４２】
図３は、本発明によるストリーミング・データの送信方法が適用されるネットワーク・システムの別の一例である。
図３は、多重サーバを通じてストリーミング・データが提供される場合を図示したものである。
【００４３】
図３を参照すると、本発明の一つの実施形態によるストリーミング・データの送信システムは、複数のコンテンツ・サーバ（３００，３０２，３０４，３０６，３０８）、接続制御サーバ（３１０）、及び使用者クライアント（３１２）を含むことができる。
【００４４】
接続制御サーバ（３１０）は、使用者クライアント（３１２）からコンテンツ要求情報を受信して、複数のサーバ（３００，３０２，３０４，３０６，３０８）のうちの使用者クライアントに接続されるべきサーバの情報を提供する。
【００４５】
接続制御サーバ（３１０）は、複数のサーバ（３００，３０２，３０４，３０６，３０８）から状態情報を定期的に受信して、使用者クライアントが良好な状態のサーバに接続できるように制御する。
【００４６】
使用者クライアント（３１２）は、接続制御サーバ（３１０）からサーバ・リスト情報を受信して、リストにあるコンテンツ・サーバとの接続を確立し、多重経路を通じてストリーミング・データをダウンロードする。
【００４７】
図２の場合と同様に、使用者クライアントには、多重経路を通じてストリーミング・データをダウンロードするために、通信エージェント・プログラムがインストールされる。
図４は、本発明によるストリーミング・データの送信方法が適用されるネットワーク・システムのさらに別の一例である。
【００４８】
図４は、図２のＰ２Ｐ（ピア・ツー・ピア）システムと、図３の多重サーバ・システムとが混在したシステムである。
図４を参照すると、本発明の一つの望ましい実施形態によるストリーミング・データ送信システムは、接続制御サーバ（４１０）、複数のコンテンツ・サーバ（４００，４０２，４０４，４０６，４０８）、及び複数のクライアント（４１２，４１４，４１６，４１８，４２０，４２２，４２４，４２６，４２８）を含むことができる。図４には、複数のコンテンツ・サーバが図示されているが、図４とは異なりコンテンツ・サーバの数を一つとしてもよい。
【００４９】
図４において、接続制御サーバ（４１０）は、使用者クライアントからコンテンツ要求情報を受信し、要求されたコンテンツを保存しているサーバ又は使用者クライアントのリスト情報を提供する。
【００５０】
使用者クライアント（４１２，４１４，４１６，４１８，４２０，４２２，４２４，４２６，４２８）には、図２及び図３の場合と同じく、エージェント・プログラムがインストールされている。それらのエージェント・プログラムは、クライアントの電源が投入された場合、又はエージェント・プログラムが実行された場合に、クライアントに保存されているコンテンツ情報を接続制御サーバ（４１０）に送信する。
【００５１】
コンテンツを要求した使用者クライアントは、接続制御サーバ（４１０）から提供されるリスト情報を用いて、コンテンツ・サーバ又はクライアントに対する接続を確立し、接続が確立されたクライアント又はコンテンツ・サーバに対してそれぞれ異なるサブブロックの要求を送信して、ストリーミング・データをダウンロードする。
【００５２】
図４の場合、接続制御サーバ（４１０）により提供されるノード・リストには、使用者クライアントとサーバとが共に含まれ得る。例えば、５つのノードからコンテンツ・データを受信する場合、１つのノードはコンテンツ・サーバであって、残りの４つのノードは使用者クライアントであってもよい。この場合、本発明の望ましい実施形態によれば、コンテンツ・サーバ以外の使用者クライアントからのダウンロード状態が良好であるならば、コンテンツ・サーバの負荷を減らすために、コンテンツ・サーバをノードから除外してもよい。また、コンテンツ・サーバに要求するサブブロックの数を減らしてもよい。
【００５３】
図２乃至図４では、多重経路を通じてストリーミング・データをダウンロードすることができるシステムに対して説明したが、図２乃至図４のシステム以外にも、複数のノードを通じてデータを送信する他のシステムに、本発明を適用することができることは当業者には自明だろう。
【００５４】
図６は、本発明の一つの望ましい実施形態によるストリーミング・データのダウンロード方法のフローチャートである。
図６を参照すると、使用者クライアントは接続制御サーバからノード・リスト情報を受信する（Ｓ６００）。図２のシステムの場合、ノードはコンテンツを保存している使用者クライアントである。図３のシステムの場合、ノードは複数のコンテンツ・サーバであり、図４のシステムの場合、ノードは使用者クライアントとコンテンツ・サーバのいずれも含むことができる。
【００５５】
ノード・リスト情報が受信されると、使用者クライアントは、ノード・リストにおける全てのノード又は一部のノードとの接続を確立する（Ｓ６０２）。本発明の望ましい実施形態によれば、使用者クライアントはＴＣＰ接続を確立するが、別の接続の確立方法を利用することも可能である。接続の確立に失敗した場合、接続の確立に失敗したノード情報はブラックリスト・キューに保存され、ブラックリスト・キューに保存されたノードに対しては、以後、接続の確立を試みることはない。
【００５６】
接続が確立されると、使用者クライアントは複数のノードとの接続状態を判断して、それぞれのノードからダウンロードするサブブロックの数を決定する（Ｓ６０４）。
本発明の一つの実施形態によれば、接続状態は、各ノードに伴うラウンド・トリップ（Round Trip）時間又は各ノードからのダウンロード速度によって判断される。
【００５７】
本発明の別の実施形態によれば、ダウンロードの初期状態においては、接続状態情報を判断することなく、ダウンロードするサブブロックを決定することができる。例えば、３つのノードからストリーミング・データがダウンロードされ、かつ１つのブロックが１５個のサブブロックから構成されている場合、３つのノードのそれぞれに５つのサブブロックを要求する。
【００５８】
各ノードからダウンロードされるサブブロックが決定されると、使用者クライアントは接続が確立されたノードに対し、サブブロックの送信要求を送信する（Ｓ６０６）。使用者クライアントは、接続が確立された全てのノードに対してサブブロックの要求を送信してもよいし、接続が確立された一部のノードに対してサブブロックの要求を送信してもよい。
【００５９】
使用者クライアントは、接続が確立されたノードからサブブロックをダウンロードする（Ｓ６０８）。図６には図示されていないが、使用者クライアントは、サブブロックの受信の際、ダウンロード・エラーが発生したか否かを判断する。本発明の一つの望ましい実施形態によれば、ダウンロード・エラーの発生は、サブブロックのチェックサム値を検査することにより判断される。
【００６０】
あるいは、全てのブロックを受信した後に、ブロックのチェックサム値を検査してダウンロード・エラーを判断することも可能である。
サブブロックの受信の際、使用者クライアントは、要求した全てのサブブロックがダウンロードされた接続が存在するのか否かを判断する（Ｓ６１０）。
【００６１】
要求した全てのサブブロックがダウンロードされた接続が存在する場合、使用者クライアントは、サブブロックのダウンロードが完了した接続がアイドル状態にならないように、ダウンロードが完了してないサブブロックを当該接続に再分配して、その再分配されたサブブロックを当該接続からダウンロードする。
【００６２】
使用者クライアントは、ブロックに含まれる全てのサブブロックがダウンロードされたか否かを判断する（Ｓ６１４）。
全てのサブブロックがダウンロードされると、使用者クライアントは、次のブロックについて、多重経路を通じてそれぞれのノードからダウンロードされるサブブロックの数を決定する過程を繰り返す（Ｓ６０４）。
【００６３】
ブロックに含まれる全てのサブブロックが受信されるまで、段階Ｓ６１０乃至Ｓ６１４は繰り返される。
図６を参照して説明したように、本発明によれば、一つの経路（＝接続）においてサブブロックのダウンロードが完了した場合、各ノードからダウンロードされるサブブロックを再分配してダウンロードするようにするため、アイドル接続の発生は防止され、その結果、データのダウンロード効率を向上させることができる。
【００６４】
図６において、使用者クライアントに対してストリーミング・データを送信しているノードにサブブロックを再分配する場合を図示したが、サブブロックの送信を要求されていないノードの状態をモニタリングすることによって、サブブロックを送信していないノードにサブブロックを再分配することができることは当業者にとって自明だろう。
【００６５】
また、図６には図示されていないが、複数のノードからストリーミング・データをダウンロードすることができない場合は、単一のサーバから従来の方法によりストリーミング・データがダウンロードされるように、ダウンロード・モードを切り替えることが可能である。
【００６６】
図７は、本発明の一つの望ましい実施形態による接続制御サーバの動作のフローチャートである。
図７は、図２のＰ２Ｐネットワーク、又はＰ２Ｐと多重サーバが混在したネットワークにおける接続制御サーバの動作を図示したものである。
【００６７】
図７を参照すると、接続制御サーバは、接続されたノードからアドレス情報及びコンテンツ情報を受信する（Ｓ７００）。前述したように、使用者クライアント（ノード）のそれぞれには、通信エージェント・プログラムがインストールされており、その通信エージェント・プログラムは、使用者クライアントに保存されているコンテンツ情報及び使用者クライアントのアドレス情報を接続制御サーバに送信する。受信されたノード・アドレス情報及びノード・コンテンツ情報は、接続制御サーバのデータベースに保存される。
【００６８】
接続制御サーバは、接続されたノードからコンテンツ要求情報を受信する（Ｓ７０２）。コンテンツ要求情報を受信した接続制御サーバは、段階Ｓ７００において受信した情報を利用して、要求されたコンテンツを保存しているノードを探索する（Ｓ７０４）。
【００６９】
接続制御サーバは、コンテンツ・データを要求した使用者クライアントにノード・リスト情報を提供する（Ｓ７０６）。
図７には図示されていないが、接続制御サーバはノード状態情報（例えば、ＰＩＮＧ情報）を受信してもよいし、受信したノード状態情報をノード・リスト情報とともに使用者クライアントに対して提供してもよい。
【００７０】
ノード・リスト情報を受信した後、使用者クライアントは、その状態情報を利用して、接続が確立されるべきノードを選択する。接続の確立に失敗した場合、又はデータのダウンロード・レートが良好ではない場合、使用者クライアントは、ノード状態情報を利用して新たに接続の確立を試みるノードを選択する。このようなノード状態情報は継続的に更新可能であり、更新された情報は、コンテンツ・データを要求している、あるいはデータをダウンロードしている使用者クライアントに提供される。
【００７１】
図８は、本発明の別の実施形態による接続制御サーバの動作のフローチャートである。
図８は、図３のように、多重サーバを利用した接続制御サーバ・ネットワークの動作を示したものである。
【００７２】
図８を参照すると、接続制御サーバは、コンテンツ・サーバのそれぞれから状態情報を受信する（Ｓ８００）。本発明の一つの望ましい実施形態によれば、その状態情報としては、帯域幅情報、ＣＰＵ使用率情報、メモリ使用率情報、接続者数の情報、及びファイルのＩ／Ｏ情報から構成されるグループから選択された一つ、又はこれらの組み合わせがあり得る。サーバの状態情報として、上記情報以外の他の情報も利用可能であるということは当業者にとって自明だろう。
【００７３】
接続制御サーバは、使用者クライアントからコンテンツ要求情報を受信する（Ｓ８０２）。
コンテンツ要求情報を受信した接続制御サーバは、段階Ｓ８００における状態情報を利用して、状態が良好なコンテンツ・サーバのアドレス情報（すなわち、ノード・リスト情報）、及びサブブロック分配情報（各コンテンツ・サーバからダウンロードされるサブブロックに関する情報）を、コンテンツを要求したクライアントに提供する（Ｓ８０４）。
【００７４】
図８では、サブブロック分配情報が接続制御サーバから使用者クライアントに送信される場合を図示したが、クライアント自身が、コンテンツ・サーバとの接続後に、その接続状態を検査することによってダウンロードされるサブブロックを分配することもできることは当業者とって自明だろう。
【００７５】
本発明の別の実施形態によれば、データのダウンロードの初期状態に、接続制御サーバはサブブロック分配情報を提供する。次いで、一つのブロックのデータのダウンロードの完了後は、使用者クライアントは各コンテンツ・サーバとのダウンロード速度が分かっているため、次のブロックをダウンロードする際には、使用者クライアント自身が各コンテンツ・サーバからダウンロードするサブブロックを分配する。
【００７６】
図９は、本発明の一つの望ましい実施形態による使用者クライアントにインストールされるエージェント・プログラムのブロック図である。
図９を参照すると、本発明の一つの望ましい実施形態による通信エージェント・プログラムは、エージェント管理モジュール（９００）、キャッシュ管理モジュール（９０２）、接続制御モジュール（９０４）、ノード管理モジュール（９０６）、ブロック管理モジュール（９０８）、及びサブブロック管理モジュール（９１０）を含むことができる。
【００７７】
図９において、エージェント管理モジュール（９００）は、接続制御サーバとの通信を実行して、使用者クライアントの電源が投入された場合、又はエージェント・プログラムが実行された場合、ＩＰアドレス及びポート番号を含む使用者クライアント情報と、使用者クライアントに保存されているコンテンツ情報とを接続制御サーバに提供する。
【００７８】
また、エージェント管理モジュール（９００）は、使用者がコンテンツを要求する場合、コンテンツ要求情報を接続制御サーバに提供する。エージェント管理モジュールは、要求されたコンテンツの再生にメタ情報が必要な場合、コンテンツのメタ情報を、コンテンツ・データを再生するプレーヤーに提供することができる。
【００７９】
キャッシュ管理モジュール（９０２）は、ノードからダウンロードされたストリーミング・データを管理する。キャッシュ管理モジュール（９０２）は、残存するキャッシュの容量についての情報及びキャッシュに保存されているコンテンツの情報を提供する。キャッシュ管理モジュール（９０２）は、使用者クライアントの電源が投入された場合、又はエージェント・プログラムが実行された場合、キャッシュに保存されているコンテンツ情報を提供する。本発明の一つの望ましい実施形態によれば、キャッシュ管理モジュール（９０２）は、ダウンロードされたデータが保存される場合、ダウンロードされたデータをスクランブルされた状態で保存する。
【００８０】
接続制御モジュール（９０４）は、接続制御サーバから受信したノード・リスト情報を利用して、あらかじめ設定された数のノードとの接続を確立する。接続制御モジュール（９０４）は、各ノードとの接続状態を判断して、各ノードからダウンロードされるサブブロックを分配し、その分配結果に基づいて各ノードにサブブロックを要求する。
【００８１】
また、接続制御モジュール（９０４）は、各ノードのダウンロード状態を継続的にモニタリングして、そのモニタリング結果に基づいて各ノードからダウンロードされるサブブロックを再分配する。
【００８２】
本発明の一つの望ましい実施形態によれば、接続制御モジュール（９０４）は、サブブロックのダウンロードが完了した接続が存在するか否かをモニタリングして、サブブロックのダウンロードの完了した接続が存在する場合、サブブロックのダウンロードが完了した接続と、完了してない接続のうちの一部との間でサブブロックを再分配することによって、アイドル接続が発生しないようにする。
【００８３】
本発明の別の実施形態によれば、サブブロックの受信が完了した接続が存在しない場合であっても、各ノードとのダウンロード状態によってあらかじめサブブロックを再分配することもできる。
【００８４】
本発明のさらに別の実施形態によれば、接続制御モジュールは、接続が確立されていないノードの状態情報をモニタリングして、データを送信していないノードの一部とデータを送信中であるノードの一部との間でサブブロックを再分配する。
【００８５】
前述したように、図４のシステムにおいて、接続制御モジュールは、初期においては、サーバと使用者クライアントの両方に対してデータを要求するが、使用者クライアントからのダウンロード状態が良好な場合、サーバの負荷を減らすために、サーバをノードから除外するか、あるいは比較的少量のデータのみをサーバに要求してもよい。
【００８６】
ノード管理モジュール（９０６）は、接続制御サーバから提供されるノード・リスト情報を接続制御モジュール（９０４）に提供する。前述したように、ノード・リスト情報は、ＩＰアドレスとポート番号を含み得る。本発明の一つの望ましい実施形態によれば、エージェント管理モジュール（９００）は、要求されたコンテンツを保存しているノード情報を要求して、そのノード・リスト情報をノード管理モジュール（９０６）に提供する。ノードの電源が切れたり、接続状態が不安定になることが起こり得るため、ノード情報は継続的に更新される。
【００８７】
サブブロック管理モジュール（９１０）は、ノードからサブブロックをダウンロードして、ブロックに含まれる全てのサブブロックがダウンロードされたか否かを判断する。全てのサブブロックがダウンロードされると、サブブロック管理モジュール（９１０）は、ダウンロードされたブロックのデータをブロック管理モジュール（９０８）に提供する。サブブロック管理モジュールが、ブロックに含まれる全てのサブブロックがダウンロードされたと判断した場合、接続制御モジュールは次のブロックのサブブロックを要求する。
【００８８】
ブロック管理モジュール（９０８）は、受信されたブロック・データを、ストリーミング・データを再生するプレーヤー又はキャッシュ管理モジュールに提供する。
図９には図示されていないが、予約管理モジュールを通信エージェント・プログラムにさらに含めることができる。ストリーミング・データが高速で送信される場合であっても、インターネットの接続状態の不安定性のために、クライアントがこのような送信速度でデータをダウンロードできない場合がある。このような場合には、映画のデータは、その映画のデータを再生する前に、予約管理モジュールを通じてキャッシュにあらかじめ保存され、予約管理モジュールはこのような予約のための処理を遂行する。
【００８９】
予約管理モジュールは、使用者が予約を要求したストリーミング・データに関する情報を管理し、予約されたコンテンツが受信されたか否かをモニタリングする。予約管理モジュールは要求されたデータのダウンロードが完了するまで、接続制御モジュールを通じてデータを要求する。
【００９０】
図１０は、本発明の一つの望ましい実施形態による接続制御モジュールの詳細なブロック図である。
図１０を参照すると、接続制御モジュールは、接続確立モジュール（１０００）、接続状態判断モジュール（１００２）、サブブロック分配モジュール（１００４）、及びダウンロード状態モニタリング・モジュール（１００６）を含むことができる。
【００９１】
接続確立モジュール（１０００）は、接続制御サーバから提供されるノード・リスト情報を利用して、ダウンロードされるデータを提供するノードとの接続を確立する。接続の確立は、以下の段階を含み得る。
【００９２】
（ｉ）使用者クライアントがノードに対しＴＣＰ接続の要求を送信する。
（ｉｉ）ノードは、ＴＣＰ接続を許可することができるか否かを判断する。
（ｉｉｉ）ノードは、ＴＣＰ接続を許可する。
【００９３】
前述したように、ＴＣＰ接続以外の別の接続の確立方法を利用することも可能である。
接続状態判断モジュール（１００２）は、各ノードとの接続状態を判断する。接続状態判断モジュール（１００２）は、接続状態の評価指数を計算して接続状態を判断する。
【００９４】
本発明の一つの実施形態によれば、接続状態の評価指数は、各ノードとのラウンド・トリップ時間を利用して計算され得る。
本発明の別の実施形態によれば、接続状態の評価指数は、各ノードからのダウンロード速度の情報を利用して計算可能である。あるいは、ラウンド・トリップ時間及びダウンロード速度の両方を考慮して、接続状態の評価指数を計算することも可能である。
【００９５】
初期のデータ受信についてはダウンロード速度が未知であるため、ラウンド・トリップ時間を利用して接続状態の評価指数を計算し、データのダウンロードが進行されてダウンロード速度が既知となった後に、ダウンロード速度を利用して接続状態の評価指数を計算するのが望ましい。ダウンロード速度は連続的に変化するため、接続状態の評価指数もダウンロード速度の変化に応じて更新される。
【００９６】
本発明の別の実施形態によれば、接続状態判断モジュールは、サーバからサーバの状態に関する情報を受信して、その状態情報を利用して接続状態を判断する。
サブブロック分配モジュール（１００４）は、接続状態判断モジュール（１００２）によって計算された接続状態の評価指数を利用して、サブブロックを分配する。サブブロック分配モジュール（１００４）は、接続状態の評価指数の比に基づいて、各ノードからダウンロードされるサブブロックの数を決定することが望ましい。
【００９７】
ダウンロード状態モニタリング・モジュール（１００６）は、各ノードに設定された接続のうち、サブブロックのダウンロードが完了した接続が存在するか否かを判断して、サブブロックのダウンロードが完了した接続が存在する場合は、サブブロック分配モジュール（１００４）にサブブロックの再分配を要求する。
【００９８】
全ての接続されたノードに対してサブブロックを再分配することになれば、全てのノードに対して制御信号を送信しなければならないため、効率的ではない。したがって、本発明の一つの望ましい実施形態によれば、サブブロックのダウンロードが完了した接続とダウンロード率が最低の接続との間でのみサブブロックを再分配する。この場合、サブブロックの送信が完了したノードとデータの送信速度が最低のノードとに限って制御信号を送信すればよい。
【００９９】
図１１は、本発明の一つの望ましい実施形態によって、接続状態を判断することによりサブブロックを再分配する過程のフローチャートである。
図１１を参照すると、ダウンロードの初期状態では、接続されたノードのそれぞれに伴うラウンド・トリップ時間を測定する（Ｓ１１００）。ラウンド・トリップ時間とは、接続されたノードにチェック信号を送信し、このチェック信号に対する応答信号が受信されるまでにかかる時間を意味する。
【０１００】
ラウンド・トリップ時間の測定後、全ての接続について平均ダウンロード速度を知ることができるか否かを判断する（Ｓ１１０２）。すでにいくつかのブロックがダウンロードされた状態であれば、全ての接続についての平均ダウンロード速度を知ることができる。
【０１０１】
全ての接続についての平均ダウンロード速度を知ることができる場合、その平均ダウンロード速度の情報を利用して接続状態の評価指数を計算する（Ｓ１１０４）。例えば、３つのノードを通じてストリーミング・データをダウンロードしており、かつその３つに接続の平均ダウンロード速度が５００，０００ｂｐｓ，１００，０００ｂｐｓ，及び６４，０００ｂｐｓである場合、各接続の接続状態の評価指数は、それぞれ５００，０００，１００，０００，及び６４，０００である。平均ダウンロード速度を正規化した値を接続状態の評価指数として使うことも可能である。
【０１０２】
全ての接続についての平均ダウンロード速度を知ることができない場合、一部の接続についての平均ダウンロード速度を知ることができるか否かを判断する（Ｓ１１０６）。このような場合は、ストリーミング・データのダウンロード中に新たなノードからストリーミング・データがダウンロードされる場合に発生し得る。
【０１０３】
一部の接続についての平均ダウンロード速度を知ることができる場合、ラウンド・トリップ時間及び平均ダウンロード速度を利用して接続状態の評価指数を計算する（Ｓ１１０８）。
【０１０４】
例えば、３つのノードからストリーミング・データを受信しており、かつ第１のノードの平均ダウンロード速度が２００，０００ｂｐｓであり、第２のノードの平均受信速度が１００，０００ｂｐｓであり、第３のノードの平均ダウンロード速度情報が未知である場合を仮定しよう。さらに、第１のノードのラウンド・トリップ時間は２３ｍｓであり、第２のノードのラウンド・トリップ時間は３２ｍｓであり、第３のノードのラウンド・トリップ時間は２０ｍｓであると仮定しよう。
【０１０５】
この場合、接続状態の評価指数は、（ダウンロード速度）／（ラウンド・トリップ時間）によって計算される。第３のノードの平均ダウンロード速度は、最小の（ダウンロード速度）／（ラウンド・トリップ時間）の値を利用して予測される。第２のノードの（ダウンロード速度）／（ラウンド・トリップ時間）の値が最小であるため、第３のノードの平均ダウンロード速度は、以下の式（１）のように計算することができる。
【０１０６】
【数１】
2006513676.tif 000003
全ての接続についての平均ダウンロード速度を知ることができない場合、ラウンド・トリップ時間を利用して接続状態の評価指数を計算する。本発明の一つの実施形態によれば、ラウンド・トリップ時間の逆数を接続状態の評価指数として使うことができる。
【０１０７】
例えば、３つのノードからストリーミング・データをダウンロードしており、かつ各ノードのラウンド・トリップ時間が、２３ｍｓ、４１ｍｓ、及び３２ｍｓと仮定しよう。この場合、各ノードの接続状態の評価指数はそれぞれ、１／２３、１／４１、及び１／３２となり得る。
【０１０８】
接続状態の評価指数の計算の後、全てのサブブロックのうちからいくつのサブブロックをそれぞれのノードからダウンロードするのかを決定する。
各ノードからダウンロードされるサブブロックの数は、接続状態の評価指数によって決定される。より具体的には、ダウンロードされるサブブロックの数は、以下の式（２）によって決定される。
【０１０９】
【数２】
2006513676.tif 000004
ここでＰｉは、各ノードに要求されるサブブロックの数であり、αｉは各接続の接続状態の評価指数である。すなわち、使用者クライアントは、Ｐｉ個のサブブロックを各ノードに要求する。
【０１１０】
図１２は、本発明の一つの望ましい実施形態によって、サブブロックのダウンロードが完了した接続が存在する場合に実行される過程のフローチャートである。
図１２を参照すると、接続制御モジュールのダウンロード状態モニタリング・モジュールは、サブブロックのダウンロードが完了した接続が存在するか否かをモニタリングする（Ｓ１２００）。
【０１１１】
サブブロックのダウンロードが完了した接続が存在する場合、サブブロックのダウンロードがまだ完了してない接続のうちダウンロード率が最低の接続を探索する（Ｓ１２０２）。ここでダウンロード率は、（ダウンロードされたサブブロックの数）／（要求されたサブブロックの数）によって計算可能である。
【０１１２】
ダウンロード率が最低の接続が探索された後、ダウンロード率が最低の接続において、ダウンロードされるべき残りのサブブロックの数を計算する（Ｓ１２０４）。
ダウンロード率が最低の接続における残りのサブブロックの数を計算した後、サブブロックのダウンロードが完了した接続とダウンロード率が最低の接続との間でダウンロードされるべきサブブロックを再分配する必要があるか否かを判断する（Ｓ１２０６）。例えば、サブブロックの再分配のための制御信号を送信している間に、残りのサブブロックをダウンロードすることが可能であるならば、サブブロックの再分配は不要である。
【０１１３】
サブブロックの再分配が必要であると判断される場合、接続状態の評価指数に基づいて、サブブロックのダウンロードが完了した接続とダウンロード率が最低の接続とからダウンロードされるサブブロックを再分配する（Ｓ１２０８）。
【０１１４】
サブブロックの再分配は、以下の式（３）によって計算される。
【０１１５】
【数３】
2006513676.tif 000005
ここで、Ｐ１はダウンロード率が最低の接続に再配分されたサブブロックの数であり、α１はダウンロード率が最低の接続の接続状態の評価指数であり、Ｐ２はサブブロックのダウンロードが完了した接続に再配分されたサブブロックの数であり、α２はサブブロックのダウンロードが完了した接続の接続状態の判断指数である。
【０１１６】
サブブロックが再分配されると、新たな分配結果に基づいて各接続に対応するノードにサブブロックを要求する。計算の結果、サブブロックのダウンロード率が最低の接続からサブブロックをダウンロードする必要がない場合は、使用者クライアントは対応するノードにサブブロックの送信中止を要求する。
【０１１７】
図１３は、本発明の一つの望ましい実施形態による接続制御サーバのモジュールのブロック図である。
図１３は、図２のＰ２Ｐネットワークのシステム、又は図４のような多重サーバとＰ２Ｐとが混在されたシステムにおける接続制御サーバのモジュールを示したものである。
【０１１８】
図１３を参照すると、本発明の一つの実施形態による接続制御サーバは、メッシュ管理モジュール（１３００）、ノード情報提供モジュール（１３０２）、及び認証モジュール（１３０４）を含むことができる。接続制御サーバは、使用者データベース（１３０６）、メタ情報データベース（１３０８）、及びメッシュ情報データベース（１３１０）に結合され得る。
【０１１９】
図１３において、メッシュ管理モジュール（１３００）は、接続制御サーバに接続されている使用者クライアントに関する情報を管理する。前述したように、使用者クライアントの電源が投入される場合、又は通信エージェント・プログラムが実行される場合に、クライアントのアドレス情報及びクライアントに保存されているコンテンツ情報が接続制御サーバに送信され、メッシュ管理モジュール（１３００）は、上記情報を受信して、これをメッシュ情報データベース（１３１０）に保存する。
【０１２０】
ノード情報提供モジュール（１３０２）は、使用者が特定コンテンツを要求する場合、メッシュ情報データベース（１３１０）を利用して、当該コンテンツを保存しているノードの情報を抽出し、その抽出された情報を使用者クライアントに提供する。
【０１２１】
認証モジュール（１３０４）は使用者を認証して、課金情報を処理する。使用者がコンテンツを要求する場合、使用者ＩＤ及びパスワードを含む認証キー情報が接続制御サーバに送信され、認証モジュール（１３０４）は、その使用者が登録された使用者であるか否かを判断する。また、認証モジュール（１３０４）は、外部課金サーバ（図示せず）と連携することにより、使用者がコンテンツに対する対価を支払ったか否かを判断する。
【０１２２】
使用者データベース（１３０６）には、登録された使用者のＩＤ、パスワード、個人情報などが保存されており、メタ情報データベース（１３０８）には、コンテンツの符号化方式、著作者に関する情報などが保存されている。コンテンツを要求している使用者が認証されると、メッシュ管理モジュール（１３００）は、使用者に対してメタ情報を提供する。一般的に、メタ情報は、ストリーミング・データの再生のため必要な情報であるが、メタ情報なしにストリーミング・データの再生が可能である場合には、メタ情報データベース（１３０８）は接続制御サーバに結合されていなくてもよい。
【０１２３】
メッシュ情報データベース（１３１０）には、接続制御サーバに接続されている複数の使用者クライアントの情報及び使用者クライアントのそれぞれに保存されているコンテンツ情報が保存されている。
【０１２４】
図１４は、本発明の別の実施形態による接続制御サーバのモジュールのブロック図である。
図１４を参照すると、接続制御サーバは、サーバ状態判断モジュール（１４００）、サブブロック分配モジュール（１４０２）、サーバ・リスト提供モジュール（１４０４）、及び認証モジュール（１４０６）を含むことができる。接続制御サーバには、使用者データベース（１４０８）、コンテンツ・サーバ・データベース（１４１０）、及びメタ情報データベース（１４１２）が結合され得る。
【０１２５】
サーバ状態判断モジュール（１４００）は、接続制御サーバが管理するコンテンツ・サーバの状態情報を判断する。前述したように、サーバ状態判断モジュール（１４００）は、帯域幅情報、ＣＰＵ使用率情報、メモリ使用率情報、接続者数の情報、及びファイルのＩ／Ｏ情報などを含む情報を利用して、各コンテンツ・サーバの状態を判断する。
【０１２６】
サーバ・リスト提供モジュール（１４０４）は、コンテンツを要求する使用者クライアントが接続するコンテンツ・サーバのリスト情報を提供する。サーバ・リスト提供モジュールは、サーバ状態判断モジュールの判断結果を利用して、状態が良好なサーバのリストを提供する。
【０１２７】
サブブロック分配モジュール（１４０２）は、複数のコンテンツ・サーバの状態情報を利用して、各コンテンツ・サーバからダウンロードされるべきサブブロックの数についての情報を、コンテンツを要求した使用者クライアントに提供する。
【０１２８】
コンテンツ・サーバ・データベース（１４１０）には、接続制御サーバが管理するコンテンツ・サーバについての情報が保存されている。
認証モジュール（１４０６）の機能及び使用者データベース（１４０８）及びメタ情報データベース（１４１２）に保存される情報は、図１３の場合と同一である。
【産業上の利用可能性】
【０１２９】
以上、説明したように、本発明によるストリーミング・データの送信及びダウンロード方法によれば、多重経路を通じてストリーミング・データが提供されるため、ある一つのノードの接続にエラーが発生したとしても、安定なストリーミング・サービスを提供することができる。
【０１３０】
また、本発明によれば、ある一つの接続においてサブブロックのダウンロードが完了した場合に、ダウンロードされるサブブロックは再分配されるため、アイドル接続の発生は防止され、ストリーミング・データのダウンロード効率を向上させることができる。
【０１３１】
特に、本発明は、Ｐ２Ｐネットワークにおいて、多数のノードを通じてストリーミング・データがダウンロードされる場合に有用である。
【図面の簡単な説明】
【０１３２】
【図１】本発明が適用されるストリーミング・データの送信システムの概略的構成。
【図２】本発明によるストリーミング・データの送信方法が適用されるネットワーク・システムの一例。
【図３】本発明によるストリーミング・データの送信方法が適用されるネットワーク・システムの別の一例。
【図４】本発明によるストリーミング・データの送信方法が適用されるネットワーク・システムのさらに別の一例。
【図５】本発明の一つの望ましい実施形態によるストリーミング・データの構造。
【図６】本発明の一つの望ましい実施形態によるストリーミング・データのダウンロード方法のフローチャート。
【図７】本発明の一つの望ましい実施形態による接続制御サーバの動作のフローチャート。
【図８】本発明の別の実施形態による接続制御サーバの動作のフローチャート。
【図９】本発明の一つの望ましい実施形態による使用者クライアントにインストールされるエージェント・プログラムのブロック図。
【図１０】本発明の一つの望ましい実施形態による接続制御モジュールの詳細なブロック図。
【図１１】本発明の一つの望ましい実施形態によって、接続状態を判断することにより、サブブロックを再分配する過程のフローチャート。
【図１２】本発明の一つの望ましい実施形態によって、サブブロックのダウンロードが完了した接続が存在する場合に実行される過程のフローチャート。
【図１３】本発明の一つの望ましい実施形態による接続制御サーバのモジュールのブロック図。
【図１４】本発明の別の実施形態による接続制御サーバのモジュールのブロック図。
【図１】
2006513676.tif 000006
【図２】
2006513676.tif 000007
【図３】
2006513676.tif 000008
【図４】
2006513676.tif 000009
【図５】
2006513676.tif 000010
【図６】
2006513676.tif 000011
【図７】
2006513676.tif 000012
【図８】
2006513676.tif 000013
【図９】
2006513676.tif 000014
【図１０】
2006513676.tif 000015
【図１１】
2006513676.tif 000016
【図１２】
2006513676.tif 000017
【図１３】
2006513676.tif 000018
【図１４】
2006513676.tif 000019
【国際調査報告】
2006513676.tif 000020