(57)【要約】【課題】従来のピア・トゥ・ピア型配信では、適切ではない配信ツリーが形成され、また発信源を選択できずコンテンツ受信品質を保つことが困難であった。【解決手段】コンテンツ配信サーバ装置（Ｓ）と、クライアント装置群（Ｃ）と、サーバ装置およびクライアント装置との接続関係を制御するトポロジ制御装置（Ｔ）とで構成され、下記の手順でコンテンツを配信する。（１）クライアント装置（Ｃ１）がコンテンツ取得要求をトポロジ制御装置（Ｔ）に問い合わせる（２）トポロジ制御装置（Ｔ）において接続先候補に含まれるピア装置の識別情報をクライアント装置（Ｃ１）に通知する（３）クライアント装置（Ｃ１）において識別情報で示されるピア装置に対し接続を試みる（４）クライアント装置（Ｃ１）においてパケットを受信し、別なクライアント装置（Ｃ２）からのコンテンツ取得要求を受信した場合パケットをクライアント装置（Ｃ２）に送信する。【選択図】        図１
2004246790.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツをパケットに分割して配信するコンテンツ配信サーバ装置（Ｓ）と、コンテンツ配信サーバ装置から送出されたコンテンツを受信するクライアント装置群（Ｃ）と、前記コンテンツ配信サーバ装置および前記クライアント装置との接続関係を制御するトポロジ制御装置（Ｔ）とで構成され、前記クライアント装置群に含まれる各々のクライアント装置は他のクライアント装置から要求があれば前記他のクライアント装置に対しコンテンツを配信する能力を有するコンテンツ配信方法であって、
（１）前記クライアント装置群（Ｃ）に含まれるクライアント装置（Ｃ１）が、コンテンツ取得要求を前記トポロジ制御装置（Ｔ）に問い合わせるステップと、
（２）前記トポロジ制御装置（Ｔ）において、前記クライアント装置（Ｃ１）からのコンテンツ取得要求を受信し、前記コンテンツ配信サーバ装置（Ｓ）および前記クライアント装置群（Ｃ）の中から前記クライアント装置（Ｃ１）が要求したコンテンツを配信する能力のある装置群（以下ピア装置群と称す）をリストアップし接続先候補（Ｌ１）として抽出するステップと、
（３）前記トポロジ制御装置（Ｔ）において、接続先候補（Ｌ１）として抽出された前記ピア装置群がそれぞれ有する属性値を入力とし評価値を出力する評価関数（Ｆ）を用い、接続先候補（Ｌ１）として抽出された前記ピア装置群それぞれの評価値を求めるステップと、
（４）前記トポロジ制御装置（Ｔ）において、前記評価値に基づき事前に定義された選択ポリシによる接続先候補絞り込みを実施し、絞り込んだ接続先候補（Ｌ２）を抽出するステップと、
（５）前記トポロジ制御装置（Ｔ）において絞り込まれた前記接続先候補（Ｌ２）に含まれる前記ピア装置の識別情報を前記クライアント装置（Ｃ１）に通知するステップと、
（６）前記クライアント装置（Ｃ１）において、通知された前記識別情報で示される前記ピア装置のうち少なくとも一つ以上に対し接続を試みるステップと、
（７）前記クライアント装置（Ｃ１）において、接続を試みた前記ピア装置毎にバッファ領域を確保し、受信した前記パケットを前記バッファ領域に格納し、事前に定義されたパケット決定基準に基づいてパケット毎に各々の前記バッファ領域の中から有効なパケットを決定するステップと、
を有することを特徴とするコンテンツ配信方法。
【請求項２】
請求項１に記載のコンテンツ配信方法であって、
さらに
（８）前記クライアント装置（Ｃ１）において、前記クライアント装置群（Ｃ）に含まれる別のクライアント装置（Ｃ２）からのコンテンツ取得要求を受信した場合、前記クライアント装置（Ｃ２）が要求するコンテンツに対応する前記有効なパケットを前記クライアント装置（Ｃ２）に送信するステップと、
を有することを特徴とするコンテンツ配信方法。
【請求項３】
請求項１から２のいずれかに記載のコンテンツ配信方法において、
前記クライアント装置群（Ｃ）に含まれるあるクライアント装置（Ｃ１）があるコンテンツを複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））から受信しており、前記複数の接続先との接続が所定の上限数（ＵＬ１）以上切断した場合、
（９）前記クライアント装置（Ｃ１）において、接続先の追加要求を前記トポロジ制御装置（Ｔ）に対し送信するステップと、
（１０）前記トポロジ制御装置（Ｔ）において、前記クライアント装置（Ｃ１）との接続が確立している接続先の前記属性値から前記評価関数を用いて算出した前記評価値に基づき、所定の方法で代表評価値（Ｅ１）を算出するステップと、
（１１）前記トポロジ制御装置（Ｔ）において、前記複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））を除外した前記クライアント装置群（Ｃ’）および前記コンテンツ配信サーバ装置（Ｓ）（以下ピア装置と称す）の中から前記クライアント装置（Ｃ１）が要求したコンテンツを配信する能力のある装置群をリストアップし接続先候補（Ｌ３）として抽出するステップと、
（１２）前記トポロジ制御装置（Ｔ）において、前記接続先候補（Ｌ３）の中から前記代表評価値（Ｅ１）を有する装置群を抽出し接続先候補（Ｌ４）とするステップと、
（１３）前記トポロジ制御装置（Ｔ）において絞り込まれた前記接続先候補（Ｌ４）に含まれる前記ピア装置の識別情報を前記クライアント装置（Ｃ１）に通知するステップと、
（１４）前記クライアント装置（Ｃ１）において、通知された前記識別情報で示される前記ピア装置のうち少なくとも一つ以上に対し接続を試みるステップと、
（１５）前記クライアント装置（Ｃ１）において、接続を試みた前記ピア装置毎に受信したパケットを格納する為のバッファ領域を確保し、継続して前記パケットを受信しているバッファ領域を含め、事前に定義されたパケット決定基準に基づいて、パケット毎に各々のバッファ領域の中から有効なパケットを決定するステップと、
を有することを特徴とするコンテンツ配信方法。
【請求項４】
請求項１から３のいずれかに記載のコンテンツ配信方法において、
前記クライアント装置群（Ｃ）に含まれるあるクライアント装置（Ｃ１）があるコンテンツを複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））から受信しており、前記複数の接続先との接続を全て切断した場合、
（１６）前記クライアント装置（Ｃ１）において、コンテンツ取得要求を前記トポロジ制御装置（Ｔ）に問い合わせるステップと、
（１７）前記トポロジ制御装置（Ｔ）において、前記複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））を除外した前記クライアント装置群（Ｃ’）および前記コンテンツ配信サーバ装置（Ｓ）（以下ピア装置群と称す）の中から前記クライアント装置（Ｃ１）が要求したコンテンツを配信する能力のある装置群をリストアップし接続先候補（Ｌ５）として抽出するステップと、
（１８）前記トポロジ制御装置（Ｔ）装置において、接続先候補（Ｌ５）として抽出された前記ピア装置群がそれぞれ有する属性値を入力とし評価値を出力する評価関数（Ｆ）を用い、接続先候補（Ｌ５）として抽出された前記ピア装置群それぞれの評価値を求めるステップと、
（１９）前記トポロジ制御装置（Ｔ）において、事前に定義された前記評価値に基づく選択ポリシによって絞り込んだ接続先候補（Ｌ６）を抽出するステップと、
（２０）前記トポロジ制御装置（Ｔ）において絞り込まれた前記接続先候補（Ｌ６）に含まれる前記ピア装置の識別情報を前記クライアント装置（Ｃ１）に通知するステップと、
（２１）前記クライアント装置（Ｃ１）において、通知された前記識別情報で示される前記ピア装置のうち少なくとも一つ以上に対し接続を試みるステップと、
（２２）前記クライアント装置（Ｃ１）において、接続を試みた前記ピア装置毎に受信した前記パケットを格納するためのバッファ領域を確保し、事前に定義されたパケット決定基準に基づいてパケット毎に各々のバッファ領域の中から有効なパケットを決定するステップと、
を有することを特徴とするコンテンツ配信方法。
【請求項５】
請求項４に記載のコンテンツ配信方法であって、
前記（１６）のステップの前に
（１６’）前記クライアント装置（Ｃ１）において、前記パケットをコンテンツを送信している他のクライアント装置（ＤＣ［１］、ＤＣ［２］、・・・ＤＣ［Ｍ］（Ｍは自然数））との接続を切断するステップと、
を有することを特徴とするコンテンツ配信方法。
【請求項６】
請求項４に記載のコンテンツ配信方法であって、
前記（１６）のステップの前に
（１６’’）前記クライアント装置（Ｃ１）において、前記複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））それぞれについて稼動状態を検出するステップと、
（１６’’’）前記複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））のうち１台でも稼動状態にあるものが検出できた場合、所定時間まで前記稼動状態にある装置からのパケット再送信を待つステップと、
（１６’’’’）前記稼動状態にある装置からのパケット受信が再開したら前記ステップ（１６）以降の処理を中止するステップと、
を有することを特徴とするコンテンツ配信方法。
【請求項７】
請求項１から６のいずれかに記載のコンテンツ配信方法であって、
前記コンテンツ配信サーバ（Ｓ）の属性値は基底値ａ［０］とし、
前記クライアント装置群（Ｃ）に含まれるあるクライアント装置（Ｃ１）の属性値は、受信したコンテンツが前記コンテンツ配信サーバ装置（Ｓ）から前記クライアント装置（Ｃ１）にいたるまでに経由したほかのクライアント装置数がＮ個である場合の属性値をａ［Ｎ］と表記した場合、ｉ＜ｊである場合はａ［ｉ］＜ａ［ｊ］を満たす値とし、
前記評価関数（Ｆ）は属性ａ［ｋ］に対する評価関数をＦ（ａ［ｋ］）と表記した場合、ａ［ｉ］＜ａ［ｊ］ならばＦ（ａ［ｉ］）＜Ｆ（ａ［ｊ］）を満たすことを特徴とするコンテンツ配信方法。
【請求項８】
請求項１から６のいずれかに記載のコンテンツ配信方法であって、
前記パケットのうちある時刻ｔにおいて送出可能な前記パケットのコンテンツの中における位置をｐとし、前記コンテンツ配信サーバ装置（Ｓ）の属性値および前記クライアント装置群（Ｃ）に含まれるあるクライアント装置（Ｃ１）の属性値は、前記ｔおよび前記ｐとし、
前記評価関数（Ｆ）は、コンテンツの中における位置Ｐとそれを受信／送信した時刻Ｔと参照時刻Ｔ’を入力とし、前記別の参照時刻Ｔ’において前記コンテンツ配信サーバ装置／前記クライアント装置から送信／受信されると予測される前記パケットのコンテンツの中における位置Ｐ’を評価値として出力する
ことを特徴とするコンテンツ配信方法。
【請求項９】
請求項１から８のいずれかに記載のコンテンツ配信方法であって、
前記選択ポリシは、前記評価値を最小または最大とする前記ピア装置の中からある上限数（ＵＬ２）以下の前記ピア装置を選択することを特徴とするコンテンツ配信方法。
【請求項１０】
請求項１から８のいずれかに記載のコンテンツ配信方法であって、
前記選択ポリシは、全てのピア装置を同じ評価値を有しているピア装置の組にグループ化し、下限数（ＬＬ１）以上のピア装置が存在するグループの中で最も前記評価値を最小、または最大とするグループに属する前記ピア装置を一時的な接続先候補（Ｌ７）とし、前記接続先候補（Ｌ７）の中からある上限数（ＵＬ３）以下の前記ピア装置を選択することを特徴とするコンテンツ配信方法。
【請求項１１】
請求項１から１０のいずれかに記載のコンテンツ配信方法であって、
前記選択ポリシは、前記評価値が所定の上限値（ＵＬ４）を上回る前記ピア装置、あるいは下限値（ＬＬ２）を下回る前記ピア装置を選択候補から除外する処理を含むことを特徴とするコンテンツ配信方法。
【請求項１２】
請求項１から１１のいずれかに記載のコンテンツ配信方法であって、
前記評価値は、所定の数学的な方法で丸められることを特徴とするコンテンツ配信方法。
【請求項１３】
請求項１から１２のいずれかに記載のコンテンツ配信方法であって、
前記パケット決定基準は、前記パケット毎に最もパケットの到着の早かったパケットを有効なパケット定義することを特徴とするコンテンツ配信方法。
【請求項１４】
請求項３から１３のいずれかに記載のコンテンツ配信方法であって、
前記クライアント装置（Ｃ１）が前記複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））を切断する契機は、所定の期間内にそれぞれの接続先から１つもパケットを受信できなかった時であることを特徴とするコンテンツ配信方法。
【請求項１５】
請求項３から１３のいずれかに記載のコンテンツ配信方法であって、
前記クライアント装置（Ｃ１）が前記複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））を切断する契機は、それぞれの接続先からのパケット転送品質の劣化が一定時間以上継続したときであることを特徴とするコンテンツ配信方法。
【請求項１６】
請求項１から１５のいずれかに記載のコンテンツ配信方法におけるトポロジ制御装置の各ステップを実行する手段を有するトポロジ制御装置。
【請求項１７】
請求項１から１５のいずれかに記載のコンテンツ配信方法におけるクライアント装置の各ステップを実行する手段を有するクライアント装置。
【請求項１８】
請求項１から１５のいずれかに記載のコンテンツ配信方法におけるトポロジ制御装置の各ステップをコンピュータに実行させるためのプログラム。
【請求項１９】
請求項１から１５のいずれかに記載のコンテンツ配信方法におけるクライアント装置の各ステップをコンピュータに実行させるためのプログラム。
【請求項２０】
請求項１８または１９に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンテンツ配信方法のうち特に多数のクライアントに効率よくコンテンツを配信する方法、トポロジ制御装置、クライアント装置、並びにそのプログラム及び記録媒体に関する。
【０００２】
【従来の技術】
近年インターネット上で流通するコンテンツは増加の一途を辿り、またインターネットに接続するクライアント数の増大に伴うアクセス数の増大、アクセスラインの高速化に伴うコンテンツサイズの増大などにより、これらのコンテンツがインターネットのトラヒックに深刻な影響を及ぼしている。それに伴い従来のように１台のサーバでユーザリクエストを処理することは困難となっている。そのため、現在までにキャッシュサーバ、およびミラーサーバ（オリジナルのサーバと全く同じコンテンツを格納するサーバ）を事前にネットワーク内に複数配備し、ユーザアクセスの一部をそれらのサーバに振り分けることで、インターネットに発生するトラヒックを低減する技術が実用化されている。
【０００３】
しかしインターネット上に別なサーバリソース（キャッシュサーバ・ミラーサーバ）を置く方式は、アクセス数、コンテンツ数、コンテンツ容量の増大に伴いサーバ設置台数が増加し、その結果設備コストが増大するという問題がある。
【０００４】
このような問題を解決するために、サーバを必要とせずクライアント間でコンテンツの送受信を行うピア・トゥ・ピア技術に注目が集まっている。近年ではユーザがインターネットにアクセスする際に用いられるパーソナルコンピュータの高性能化が著しく、簡易なサーバを構築することも容易となっている。またクライアントが接続するネットワークも徐々に高速化に向かっている。このように個々のクライアントの配信能力が増大してきたため、ピア・トゥ・ピア型のコンテンツ配信技術も実用的になると考えられる。
【０００５】
ピア・トゥ・ピア型のコンテンツ配信技術の一般的な例を公表特許公報（特許文献１）に基づいて解説する。該公報で開示された方法によれば、コンテンツを送信するサーバシステムとコンテンツを受信し再転送することが可能なクライアントシステムがあり、前記サーバシステムが提供するコンテンツを要求するクライアントは事前に設定された最大接続数に至るまでサーバシステムに直接接続し、その最大接続数を超えるクライアントはコンテンツ転送可能なクライアントに接続することで、サーバシステムとクライアントシステムとで構築されるコンテンツ配信ツリーが生成される。またあるクライアントの上位接続は複数存在し、あるクライアントに対し複数の上位クライアントからコンテンツを受信する。このような複数の上位クライアントの接続に一部切断が発生したら、該クライアントは前記サーバシステムに対し接続可能な上位クライアントのアドレスを要求し、取得できたアドレスに対し再接続を行う。この一連の再接続動作の間にも元々切断が発生していない接続が別に存在するため、該クライアントにおけるコンテンツ利用、および該クライアントの下位クライアントに対するコンテンツ転送処理が途切れることなく、コンテンツ配信処理を継続することが可能となる。
【０００６】
このような仕組みを導入することで、１台のサーバのみで多くのユーザに安定したコンテンツ配信サービスを提供することが可能となる。
【０００７】
【特許文献１】
特表２００２−５２２９５６号公報
【０００８】
【発明が解決しようとする課題】
しかしながら、前述の方法は下記に示す２つの課題があり、したがって実用的なサービス提供が困難であった。
【０００９】
（課題１）
サーバの接続数が最大接続数に至るまでクライアントは必ずサーバに接続してしまうため、早いタイミングでアクセスしたクライアントは必ずサーバに接続し、タイミングが遅れたクライアントは別なクライアントに接続してしまう。このような方式では、必ずしも適切ではない配信ツリーが形成される恐れがある。
【００１０】
例えば、サーバが米国にあり、クライアントが日本と米国に存在するものとする。仮にサーバの最大接続数を４としておく。日本と米国にはそれぞれクライアントが４台づつ存在するものとする。ここでまず日本のクライアント４台が早いタイミングでサーバにアクセスすると、全ての日本のクライアントは直接米国のサーバに接続する。この状態で米国のクライアント４台がサーバにアクセスしようとすると、サーバの接続数は既に日本のクライアントとの接続によって最大接続数まで占有されているため、日本のクライアントに接続しなければならない。この例では日本と米国間の接続数は８となり、日本と米国間のリンクコストがそれぞれの国内のリンクコストに比べ高額であるとすると、非常に効率が悪い。この例の場合、日本のクライアントのうち最初にアクセスするもののみがサーバと接続し、残りのクライアントはコンテンツを受信している日本のクライアントに接続するように制御すれば、日本と米国間の接続数は１となり効率を最大にすることができるはずである。
【００１１】
このような効率の最大化を行うためには、あるクライアントに情報を送信するサーバあるいはコンテンツ配信可能なクライアントを接続先として選択する際、最適な接続先を選択する手段が必要であるが、これまではこのような手段が提供されてこなかった。
【００１２】
（課題２）
前記公報に記載の方法では、前記サーバシステムが接続可能な上位クライアント候補を前記クライアントに通知し、前記クライアントが通知された前記上位クライアント候補に接続を行う。その結果複数の上位クライアントから同時にコンテンツを取得する可能性が有る。この冗長性は、一部の上位クライアントに対する接続が切断された場合でもコンテンツが途切れず受信、転送できることを目的としている。
【００１３】
ここで、この方式をＭＰＥＧ（Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）−２の高画質映像のストリーミング配信に適用することを考える。ＭＰＥＧ−２ストリームの平均的なビットレートを６Ｍｂｐｓとする。また該クライアントはストリームの送受信バッファを有するが、これは下位クライアントに再転送を行う際送信レートを平滑化させるために設けられる。一台のクライアントにおいて、ＭＰＥＧ−２ストリームを受信し下位クライアントに送信するまでに要する時間Δｔは、ほぼ前記ストリーム送受信バッファの容量に依存するものと仮定する。このストリーム送受信バッファはＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）形式で実現されるものとし、３ＭＢｙｔｅの容量を有するものとすると、Δｔ＝（バッファサイズ）／（ストリームのビットレート）＝３Ｍｂｙｔｅ／６Ｍｂｐｓ＝４秒となる。このΔｔ（＝４秒）が１台のクライアントをストリームが経由するときに発生する遅延時間である。
【００１４】
あるクライアント（Ｃとする）が２つの上位クライアント（ＵＣ１、ＵＣ２とする）からストリームを受信しているものとする。ＵＣ１から受信したストリームはＵＣ１を含め３台のクライアントを経由し、ＵＣ２から受信したストリームはＵＣ２を含め１台のクライアントを経由するものとする。この場合、ＵＣ１から受信したストリームの遅延時間（サーバから送出したストリームがＣに到着するまでの時間）はΔｔ１＝３台×４秒＝１２秒、ＵＣ２から受信したストリームの遅延は同様にΔｔ２＝１台×４秒＝４秒となる。ＵＣ１からのストリームをＣで利用したり下位クライアントに転送している場合に、ＵＣ１からの接続が切断されたらＵＣ２からのストリームをＵＣ１の代わりに利用・転送するが、ＵＣ１からのストリームの方がＵＣ２からのストリームよりも８秒遅く到着していたため、クライアントが有する４秒のバッファでは差を吸収することができず、ＵＣ１からのストリームをＵＣ２からのストリームに切り替えるとΔｔ１−Δｔ２  ＝８秒のＭＰＥＧ−２映像が欠損することになる。またＵＣ２からのストリームをＣで利用したり下位クライアントに転送している場合に、ＵＣ２からの接続が切断されたらＵＣ１からのストリームをＵＣ２の代わりに利用・転送するが、ＵＣ１からのストリームの方がＵＣ２からのストリームよりも８秒遅く到着していたため、クライアントが有する４秒のバッファでは差を吸収することができず、ＵＣ２からのストリームをＵＣ１からのストリームに切り替えるとΔｔ１−Δｔ２  ＝８秒だけストリームが逆戻りしてしまう。
【００１５】
このような映像のスキップや逆戻りは通常のクライアントサーバ型映像配信システムで頻発するバッファリングによる待ち時間と同様、視聴ユーザに対し大きな不快感を与えてしまう恐れがある。
【００１６】
本願に記載の発明は、ピア・トゥ・ピア型コンテンツ配信を実施する際、上記のような課題を克服し、あるクライアントに対し情報を送信するサーバあるいはコンテンツ配信可能なクライアントの中から最適な接続先を選択する手段を提供し、ユーザに対し中断、スキップ、逆戻りなどが発生しない高品質なサービスを提供することを目的とする。
【００１７】
【課題を解決するための手段】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記の通りである。
【００１８】
即ち、本発明は、コンテンツをパケットに分割して配信するコンテンツ配信サーバ装置（Ｓ）と、コンテンツ配信サーバ装置から送出されたコンテンツを受信するクライアント装置群（Ｃ）と、前記コンテンツ配信サーバ装置および前記クライアント装置との接続関係を制御するトポロジ制御装置（Ｔ）とで構成され、前記クライアント装置群に含まれる各々のクライアント装置は他のクライアント装置から要求があれば前記他のクライアント装置に対しコンテンツを配信する能力を有するコンテンツ配信方法であって、（１）前記クライアント装置群（Ｃ）に含まれるクライアント装置（Ｃ１）が、コンテンツ取得要求を前記トポロジ制御装置（Ｔ）に問い合わせるステップと、（２）前記トポロジ制御装置（Ｔ）において、前記クライアント装置（Ｃ１）からのコンテンツ取得要求を受信し、前記コンテンツ配信サーバ装置（Ｓ）および前記クライアント装置群（Ｃ）の中から前記クライアント装置（Ｃ１）が要求したコンテンツを配信する能力のある装置群（以下ピア装置群と称す）をリストアップし接続先候補（Ｌ１）として抽出するステップと、（３）前記トポロジ制御装置（Ｔ）において、接続先候補（Ｌ１）として抽出された前記ピア装置群がそれぞれ有する属性値を入力とし評価値を出力する評価関数（Ｆ）を用い、接続先候補（Ｌ１）として抽出された前記ピア装置群それぞれの評価値を求めるステップと、（４）前記トポロジ制御装置（Ｔ）において、前記評価値に基づき事前に定義された選択ポリシによる接続先候補絞り込みを実施し、絞り込んだ接続先候補（Ｌ２）を抽出するステップと、（５）前記トポロジ制御装置（Ｔ）において絞り込まれた前記接続先候補（Ｌ２）に含まれる前記ピア装置の識別情報を前記クライアント装置（Ｃ１）に通知するステップと、（６）前記クライアント装置（Ｃ１）において、通知された前記識別情報で示される前記ピア装置のうち少なくとも一つ異常に対し接続を試みるステップと、（７）前記クライアント装置（Ｃ１）において、接続を試みた前記ピア装置毎にバッファ領域を確保し、受信した前記パケットを前記バッファ領域に格納し、事前に定義されたパケット決定基準に基づいてパケット毎に各々の前記バッファ領域の中から有効なパケットを決定するステップと、を有することを特徴とする。
【００１９】
また、本発明は、さらに（８）前記クライアント装置（Ｃ１）において、前記クライアント装置群（Ｃ）に含まれる別のクライアント装置（Ｃ２）からのコンテンツ取得要求を受信した場合、前記クライアント装置（Ｃ２）が要求するコンテンツに対応する前記有効なパケットを前記クライアント装置（Ｃ２）に送信するステップと、を有することを特徴とする。
【００２０】
また、本発明は、前記クライアント装置群（Ｃ）に含まれるあるクライアント装置（Ｃ１）があるコンテンツを複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））から受信しており、前記複数の接続先との接続が所定の上限数（ＵＬ１）以上切断した場合、（９）前記クライアント装置（Ｃ１）において、接続先の追加要求を前記トポロジ制御装置（Ｔ）に対し送信するステップと、（１０）前記トポロジ制御装置（Ｔ）において、前記クライアント装置（Ｃ１）との接続が確立している接続先の前記属性値から前記評価関数を用いて算出した前記評価値に基づき、所定の方法で代表評価値（Ｅ１）を算出するステップと、（１１）前記トポロジ制御装置（Ｔ）において、前記複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））を除外した前記クライアント装置群（Ｃ’）および前記コンテンツ配信サーバ装置（Ｓ）（以下ピア装置と称す）の中から前記クライアント装置（Ｃ１）が要求したコンテンツを配信する能力のある装置群をリストアップし接続先候補（Ｌ３）として抽出するステップと、（１２）前記トポロジ制御装置（Ｔ）において、前記接続先候補（Ｌ３）の中から前記代表評価値（Ｅ１）を有する装置群を抽出し接続先候補（Ｌ４）とするステップと、（１３）前記トポロジ制御装置（Ｔ）において絞り込まれた前記接続先候補（Ｌ４）に含まれる前記ピア装置の識別情報を前記クライアント装置（Ｃ１）に通知するステップと、（１４）前記クライアント装置（Ｃ１）において、通知された前記識別情報で示される前記ピア装置のうち少なくとも一つ以上に対し接続を試みるステップと、（１５）前記クライアント装置（Ｃ１）において、接続を試みた前記ピア装置毎に受信したパケットを格納する為のバッファ領域を確保し、継続して前記パケットを受信しているバッファ領域を含め、事前に定義されたパケット決定基準に基づいて、パケット毎に各々のバッファ領域の中から有効なパケットを決定するステップと、を有することを特徴とする。
【００２１】
また、本発明は、前記クライアント装置群（Ｃ）に含まれるあるクライアント装置（Ｃ１）があるコンテンツを複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））から受信しており、前記複数の接続先との接続を全て切断した場合、（１６）前記クライアント装置（Ｃ１）において、コンテンツ取得要求を前記トポロジ制御装置（Ｔ）に問い合わせるステップと、（１７）前記トポロジ制御装置（Ｔ）において、前記複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））を除外した前記クライアント装置群（Ｃ’）および前記コンテンツ配信サーバ装置（Ｓ）（以下ピア装置群と称す）の中から前記クライアント装置（Ｃ１）が要求したコンテンツを配信する能力のある装置群をリストアップし接続先候補（Ｌ５）として抽出するステップと、（１８）前記トポロジ制御装置（Ｔ）装置において、接続先候補（Ｌ５）として抽出された前記ピア装置群がそれぞれ有する属性値を入力とし評価値を出力する評価関数（Ｆ）を用い、接続先候補（Ｌ５）として抽出された前記ピア装置群それぞれの評価値を求めるステップと、（１９）前記トポロジ制御装置（Ｔ）において、事前に定義された前記評価値に基づく選択ポリシによって絞り込んだ接続先候補（Ｌ６）を抽出するステップと、（２０）前記トポロジ制御装置（Ｔ）において絞り込まれた前記接続先候補（Ｌ６）に含まれる前記ピア装置の識別情報を前記クライアント装置（Ｃ１）に通知するステップと、（２１）前記クライアント装置（Ｃ１）において、通知された前記識別情報で示される前記ピア装置のうち少なくとも一つ以上に対し接続を試みるステップと、（２２）前記クライアント装置（Ｃ１）において、接続を試みた前記ピア装置毎に受信した前記パケットを格納するためのバッファ領域を確保し、事前に定義されたパケット決定基準に基づいてパケット毎に各々のバッファ領域の中から有効なパケットを決定するステップと、
を有することを特徴とする。
【００２２】
また、本発明のトポロジ制御装置は、前記コンテンツ配信方法におけるトポロジ制御装置の各ステップを実行する手段を有する。
【００２３】
また、本発明のクライアント装置は、前記コンテンツ配信方法におけるクライアント装置の各ステップを実行する手段を有する。
【００２４】
また、本発明のプログラムは、前記コンテンツ配信方法におけるトポロジ制御装置の各ステップをコンピュータに実行させるためのプログラムである。
【００２５】
また、本発明のプログラムは、前記コンテンツ配信方法におけるクライアント装置の各ステップをコンピュータに実行させるためのプログラムである。
【００２６】
また、本発明の記録媒体は、前記プログラムを記録したコンピュータ読み取り可能な記録媒体である。
【００２７】
【発明の実施の形態】
本発明の実施形態を下記に示す。
図１に示すように、本発明の構成要素は、コンテンツをパケットに分割して配信するコンテンツ配信サーバ装置（Ｓ）と、コンテンツ配信サーバ装置から送出されたコンテンツを受信するクライアント装置群（Ｃ）と、前記コンテンツ配信サーバ装置および前記クライアント装置との接続関係を制御するトポロジ制御装置（Ｔ）とで構成される。前記クライアント装置群（Ｃ）に含まれる各々のクライアント装置は他のクライアント装置から要求があれば前記他のクライアント装置に対しコンテンツを配信する能力を有しており、下記の手順でコンテンツを配信する。
【００２８】
（１）前記クライアント装置群（Ｃ）に含まれるクライアント装置（Ｃ１）が、コンテンツ取得要求前記トポロジ制御装置（Ｔ）に問い合わせる（図１▲１▼（図１の例ではコンテンツ“Ａ”の取得要求を実施））。
（２）前記トポロジ制御装置（Ｔ）において、前記クライアント装置（Ｃ１）からのコンテンツ取得要求を受信し、前記コンテンツ配信サーバ装置（Ｓ）および前記クライアント装置群（Ｃ）の中から前記クライアント装置（Ｃ１）が要求したコンテンツを配信する能力のある装置群（以下ピア装置群と称す）をリストアップし接続先候補（Ｌ１）として抽出する。
（３）前記トポロジ制御装置（Ｔ）装置において、接続先候補（Ｌ１）として抽出された前記ピア装置群がそれぞれ有する属性値を入力とし評価値を出力する評価関数（Ｆ）を用い、接続先候補（Ｌ１）として抽出された前記ピア装置群それぞれの評価値を求める。
（４）前記トポロジ制御装置（Ｔ）において、前記評価値に基づき事前に定義された選択ポリシによる接続先候補絞り込みを実施し、絞り込んだ接続先候補（Ｌ２）を抽出する。
（５）前記トポロジ制御装置（Ｔ）において絞り込まれた前記接続先候補（Ｌ２）に含まれる前記ピア装置の識別情報を前記クライアント装置（Ｃ１）に通知する（図１▲２▼）。
（６）前記クライアント装置（Ｃ１）において、通知された前記識別情報で示される前記ピア装置のうち少なくとも一つ以上に対し接続を試みる（図１▲３▼）。
（７）前記クライアント装置（Ｃ１）において、接続を試みた前記ピア装置毎にバッファ領域を確保し、受信した前記パケットを前記バッファ領域に格納し、事前に定義されたパケット決定基準に基づいてパケット毎に各々の前記バッファ領域の中から有効なパケットを決定する。
（８）前記クライアント装置（Ｃ１）において、前記クライアント装置群（Ｃ）に含まれる別なクライアント装置（Ｃ２）からのコンテンツ取得要求を受信した場合（図１▲３▼’）、前記クライアント装置（Ｃ２）が要求するコンテンツに対応する前記有効なパケットを前記クライアント装置（Ｃ２）に送信する。
【００２９】
このような手順を有することにより、コンテンツ配信サーバ装置（Ｓ）およびクライアント装置群（Ｃ）に含まれるクライアントを区別することなく、これらをコンテンツを受信しようとするクライアント（Ｃ１）に対する接続先として指定することが可能となるため、前記課題１を克服できる。また、トポロジ制御装置によって接続先候補となるピア装置群の中から品質劣化を抑制できるピア装置の組み合わせを選択することができるため、前記課題２も克服可能となる。
【００３０】
また前記クライアント装置群（Ｃ）に含まれるあるクライアント装置（Ｃ１）があるコンテンツを複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））から受信しており、前記複数の接続先との接続が所定の上限数（ＵＳ１）以上切断した場合、下記の手順で接続数を復旧する。
【００３１】
（９）前記クライアント装置（Ｃ１）において、接続先の追加要求を前記トポロジ制御装置（Ｔ）に対し送信する。
（１０）前記トポロジ制御装置（Ｔ）において、前記クライアント装置（Ｃ１）との接続が確立している接続先の前記属性置から前記評価関数を用いて算出した前記評価値に基づき、所定の方法で代表評価値（Ｅ１）を算出する。
（１１）前記トポロジ制御装置（Ｔ）において、前記複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））を除外した前記クライアント装置群（Ｃ’）および前記コンテンツ配信サーバ装置（Ｓ）（以下ピア装置と称す）の中から前記クライアント装置（Ｃ１）が要求したコンテンツを配信する能力のある装置群をリストアップし接続先候補（Ｌ３）として抽出する。
（１２）前記トポロジ制御装置（Ｔ）において、前記接続先候補（Ｌ３）の中から前記代表評価値（Ｅ１）を有する装置群を抽出し接続先候補（Ｌ４）とする。
（１３）前記トポロジ制御装置（Ｔ）において絞り込まれた前記接続先候補（Ｌ４）に含まれる前記ピア装置の識別情報を前記クライアント装置（Ｃ１）に通知する。
（１４）前記クライアント装置（Ｃ１）において、通知された前記識別情報で示される前記ピア装置のうち少なくとも一つ以上に対し接続を試みる。
（１５）前記クライアント装置（Ｃ１）において、接続を試みた前記ピア装置毎に受信したパケットを格納するためのバッファ領域を確保し、継続して前記パケットを受信しているバッファ領域を含め、事前に定義されたパケット決定基準に基づいて、パケット毎に各々のバッファ領域の中から有効なパケットを決定する。
【００３２】
このような手順を備えることにより、品質を最大化した上位ピア装置とほぼ同じ条件のピア装置を用いて配信ツリーを再構成することが可能となる。
【００３３】
また前記クライアント装置群（Ｃ）に含まれるあるクライアント装置（Ｃ１）があるコンテンツを複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎ自然数））から受信しており、前記複数の接続先との接続を全て切断した場合、下記の手順で接続を復旧する。
【００３４】
（１６）前記クライアント装置（Ｃ１）において、コンテンツ取得要求を前記トポロジ制御装置（Ｔ）に問い合わせる。
（１７）前記トポロジ制御装置（Ｔ）において、前記複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））を除外した前記クライアント装置群（Ｃ’）および前記コンテンツ配信サーバ装置（Ｓ）（以下ピア装置群と称す）の中から前記クライアント装置（Ｃ１）が要求したコンテンツを配信する能力のある装置群をリストアップし接続先候補（Ｌ５）として抽出する。
（１８）前記トポロジ制御装置（Ｔ）において、接続先候補（Ｌ５）として抽出された前記ピア装置群がそれぞれ有する属性値を入力とし評価値を出力する評価関数（Ｆ）を用い、接続先候補（Ｌ５）として抽出された前記ピア装置群それぞれの評価値を求める。
（１９）前記トポロジ制御装置（Ｔ）において、事前に定義された前記評価値に基づく選択ポリシによって絞り込んだ接続先候補（Ｌ６）を抽出する。
（２０）前記トポロジ制御装置（Ｔ）において絞り込まれた前記接続先候補（Ｌ６）に含まれる前記ピア装置の識別情報を前記クライアント装置（Ｃ１）に通知する。
（２１）前記クライアント装置（Ｃ１）において、通知された前記識別情報で示される前記ピア装置のうち少なくとも一つ以上に対し接続を試みる。
（２２）前記クライアント装置（Ｃ１）において、接続を試みた前記ピア装置毎に受信した前記パケットを格納するためのバッファ領域を確保し、事前に定義されたパケット決定基準に基づいてパケット毎に各々のバッファ領域の中から有効なパケットを決定する。
【００３５】
また前記（１６）の手順の前に、下記の手順を追加する。
（１６’）前記クライアント装置（Ｃ１）において、前記パケットをコンテンツを送信している他のクライアント装置（ＤＣ［１］、ＤＣ［２］、・・・ＤＣ［Ｍ］（Ｍは自然数））との接続を切断する。
【００３６】
あるいは前記（１６）の手順の前に、下記の手順を追加する。
（１６’’）前記クライアント装置（Ｃ１）において、前記複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））それぞれについて稼動状態を検出する。
（１６’’’）前記複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））のうち１台でも稼動状態にあるものが検出できた場合、所定時間まで前記稼動状態にある装置からのパケット再送信を待つ。
（１６’’’’）前記稼動状態にある装置からのパケット受信が再開したら前記ステップ（１６）以降の処理を中止する。
【００３７】
このような手順を備えることにより、上位接続が完全に断たれた場合でも、短時間で接続を復旧することが可能となる。
【００３８】
また、以上述べたコンテンツ配信方法において、前記コンテンツ配信サーバ（Ｓ）の属性値は基底値ａ［０］とし、前記クライアント装置群（Ｃ）に含まれるあるクライアント装置（Ｃ１）の属性値は、受信したコンテンツが前記コンテンツ配信サーバ装置（Ｓ）から前記クライアント装置（Ｃ１）に至るまでに経由した他のクライアント装置数がＮ個である場合の属性値をａ［Ｎ］と表記した場合、ｉ＜ｊである場合はａ［ｉ］＜ａ［ｊ］を満たす値とし、前記評価関数（Ｆ）は、属性ａ［ｋ］に対する評価関数をＦ（ａ［ｋ］）と表記した場合、ａ［ｉ］＜ａ［ｊ］ならばＦ（ａ［Ｉ］）＜Ｆ（ａ［ｊ］）を満たすように構成する。これによりあるクライアント装置が受信するパケットがこれまでに経由してきたクライアント数を評価値に反映することができる。
【００３９】
また、以上述べたコンテンツ配信方法において、前記パケットのうちある時刻ｔにおいて送出可能な前記パケットのコンテンツの中における位置をｐとし、前記コンテンツ配信サーバ装置（Ｓ）の属性値および前記クライアント装置群（Ｃ）に含まれるあるクライアント装置（Ｃ１）の属性値は、前記ｔ及び前記ｐとし、前記評価関数（Ｆ）は、コンテンツの中における位置Ｐとそれを受信／送信した時刻Ｔと参照時刻Ｔ’を入力とし、前記別の参照時刻Ｔ’において前記コンテンツ配信サーバ装置／前記クライアント装置から送信／受信されると予測される前記パケットのコンテンツの中における位置Ｐ’を評価値として出力する。これによりあるクライアント装置が受信するパケットの到着タイミングを評価値に反映することができる。
【００４０】
また、以上述べたコンテンツ配信方法において、前記選択ポリシは、前記評価値を最小または最大とする前記ピア装置の中からある上限数（ＵＬ２）以下の前記ピア装置を選択する。
【００４１】
また、以上述べたコンテンツ配信方法において、前記選択ポリシは、全てのピア装置を同じ評価値を有しているピア装置の組にグループ化し、下限数（ＬＬ１）以上のピア装置が存在するグループの中で最も前記評価値を最小、または最大とするグループに属する前記ピア装置を一時的な接続先候補（Ｌ７）とし、前記接続先候補（Ｌ７）の中からある上限数（ＵＬ３）以下の前記ピア装置を選択する。これにより同質のピア装置の組み合わせを上位ピア装置として選択することができる。
【００４２】
また、以上述べたコンテンツ配信方法において、前記選択ポリシは、前記評価値が所定の上限値（ＵＬ４）を上回る前記ピア装置、あるいは下限値（ＬＬ２）を下回る前記ピア装置を選択候補から除外する処理を含む。これによりある一定の条件、品質を満たせないピア装置を選択候補から除外できる。
【００４３】
また、以上述べたコンテンツ配信方法において、前記評価値は、所定の数学的な方法で丸められる。これにより数値化される評価値に一定の幅を持たせることができ、離散的でない指標に基づく評価値を用いたピア選択が容易となる。
【００４４】
また、以上述べたコンテンツ配信方法において、前記パケット決定基準は、前記パケット毎に最もパケットの到着の早かったパケットを有効なパケットと定義する。
【００４５】
また、以上述べたコンテンツ配信方法において、前記クライアント装置（Ｃ１）が前記複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））を切断する契機は、所定の期間内にそれぞれの接続先から１つもパケットを受信できなかった時とする。あるいは、以上述べたコンテンツ配信方法において、前記クライアント装置（Ｃ１）が前記複数の接続先（ＵＳ［１］、ＵＳ［２］、・・・、ＵＳ［Ｎ］（Ｎは自然数））を切断する契機は、それぞれの接続先からのパケット転送品質の劣化が一定時間以上継続したときとする。
【００４６】
［実施例］
本発明の実施例を以下に示す。本実施例において、コンテンツ配信サーバ（Ｓ）、トポロジ制御サーバ（Ｔ）およびクライアント群（Ｃ）はすべて汎用コンピュータ上のソフトウェアプログラムで実装され、それぞれの装置はＩＰ（インターネットプロトコル）通信が可能であるものとする。
【００４７】
（実施例１）
実施例１では、図２に示すようにコンテンツ配信サーバからパケットストリームを受信する形態として、コンテンツ配信サーバから直接受信する形態だけではなく、ストリームを受信したクライアント装置もストリームを別なクライアントに転送するようなコンテンツ配信網を、本発明によって構築する例について示す。コンテンツ配信サーバ（Ｓ）直下に接続するクライアント装置群を「１段目」のクライアント装置と呼び、１段目のクライアント装置配下に接続するクライアント装置群を「２段目」のクライアント装置、２段目のクライアント装置配下に接続するクライアント装置群を「３段目」のクライアント装置群と呼ぶ。クライアント装置群の接続ツリー構成は事前には決定されておらず、クライアント装置群に属する各々のクライアントがストリーム受信要求をトポロジ制御サーバ（Ｔ）に問い合わせ、その時に指定されたコンテンツ配信サーバまたはクライアント装置群の中のクライアントに接続することで配信ツリーが動的に形成される。１段目以外のクライアントは必ず２つのクライアント装置からストリームを受信するものとし、トポロジ制御サーバは、複数接続先のクライアントを選択する場合は必ず同じ段数のクライアントを選択する。また、今回の実施例では段数の上限値は３段までとし、また１クライアント装置・コンテンツ配信サーバのストリーム同時配信能力は３であるとする。
【００４８】
実施例１におけるコンテンツ配信サーバの構成を図３（ａ）に示す。コンテンツ配信サーバ（Ｓ）はストリームデータを入力とし、パケット化処理部によりストリームを一定のサイズに分割し、最初にコンテンツ送信を開始した時を０とするシーケンス番号を分割したストリームに先頭に付与する。パケットか処理部により生成されるパケットのフォーマットを図３（ｂ）に示す。パケット化されたストリームデータは送信バッファに格納され、レート制御部によってストリーム送出レートが所定の値になるようにパケット送出タイミングが制御される。なお、当パケットはＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）／ＩＰを用いて転送されるものとする。
【００４９】
図４に２段目のクライアント（Ｃ１）が図２の配信ツリーに接続する時のシーケンスを示す。またやり取りされるメッセージＭ１、Ｍ２、Ｍ３のフォーマットを図５に示す。メッセージＭ１、Ｍ２、Ｍ３はＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）／ＩＰ上で転送されるものとする。シーケンスは下記の通りである。
（１）Ｃ１にて受信要求を行うコンテンツ名（Ｓｔｒｅａｍ１）および後述のクライアントＣ１の状態（ｎｏｒｍａｌ）を含めたＭ１メッセージをトポロジ制御サーバ（Ｔ）に送信する。
（２）トポロジ制御サーバ（Ｔ）で、候補となる接続先クライアント（Ｃ０、Ｃ０’）を絞り込み、それらのＩＰアドレスをＭ２メッセージに含めＣ１に送信する。
（３）Ｃ１は、受信要求を行うコンテンツ名（Ｓｔｒｅａｍ１）およびストリーム受信用ＵＤＰポート番号を含めたＭ３メッセージをＣ０、Ｃ０’両接続先に送信する。
（４）Ｃ０、Ｃ０’両接続先はＣ１の通知されたＵＤＰポート番号に対し、コンテンツ配信サーバ（Ｓ）によって付与されたシーケンス番号を含むストリームデータを送信する。
【００５０】
Ｃ１がストリームデータを受信した後、図４と同様なシーケンスで３段目のクライアント（Ｃ２）が配信ツリーに接続するためにＣ１にコンテンツ取得要求を行った場合のＣ１の動作を説明する（図６参照）。Ｃ１はＣ０から受信したパケットを格納するバッファ（Ｂ）およびＣ０’から受信したパケットを格納するバッファ（Ｂ’）を有している。理想的にはおなじタイミングでおなじシーケンス番号のパケットを受信するはずであるが、実際にはネットワーク遅延や前段クライアント（Ｃ０やＣ０’）の遅延のばらつきなどが存在するため、同じシーケンス番号で比較した場合、どちらかのバッファにより早くパケットが到着するため、Ｃ１ではシーケンス番号毎に最も早く到着したパケットを受信したバッファを有効なバッファと決定し、そのバッファに格納されるパケットをＣ２送出用バッファに転送する。Ｃ２送出用バッファに格納されたパケットは、レート制御部によってストリーム送出レートが所定の値になるようにパケット送出タイミングが制御される。
【００５１】
続いてトポロジ制御サーバの構成を図７に示す。トポロジ制御サーバはＭ１メッセージを受信するリクエスト受信部、クライアント群（Ｃ）およびコンテンツ配信サーバ（Ｓ）のリストを保持するクライアントリストテーブル、クライアントリストテーブルから現時点で動作可能であるクライアント、コンテンツ配信サーバを接続先候補（Ｌ１）として抽出する接続先候補抽出部、接続先候補（Ｌ１）の中から実際にＭ２メッセージに記述するクライアント、コンテンツ配信サーバを決定する接続先候補絞り込み部、Ｍ２メッセージを送信する接続先候補送信部、およびクライアントリストテーブルに対し周期的にクライアント、コンテンツ配信サーバの負荷・状態を記述するクライアントヘルスチェック処理部で構成される。
【００５２】
クライアントリストテーブルの構成を図８に示す。クライアントリストテーブルはコンテンツ毎に定義され、情報要素はコンテンツ配信サーバアドレスまたはクライアントアドレス、稼動状態、段数、および次段接続数である。稼動状態とはクライアントヘルスチェック処理部によって当該クライアントまたはコンテンツ配信サーバが停止していると判断された場合にＤｏｗｎと記述され、稼動していると判断された場合にＵｐと記述される。Ｕｐ／Ｄｏｗｎの別は各クライアントやコンテンツ配信サーバで動作している状態通知エージェントプログラムとの通信が行えたか否かで判断する。また段数とはコンテンツ配信サーバであれば０とし、クライアントの場合はコンテンツ配信ツリーの中で自分が位置している段数が記載される。まだ、配信ツリーに接続していないクライアントの段数は−１と記載される。また次段接続数とは、当該クライアント・コンテンツ配信サーバに直に接続しているクライアント数である。
【００５３】
接続先候補抽出部においては、クライアントリストテーブルの中から稼動状態がＤｏｗｎのもの、および段数が−１のものを除外し、それ以外のクライアント、コンテンツ配信サーバを接続先候補（Ｌ１）とする。
【００５４】
接続先候補絞り込み部においては、図９に示すようなフローによって、まず段数の上限である３を超えることができないため、段数が３であるクライアントは接続先候補から除外し、さらに次段接続数が３を超えているものは候補から除外する。おなじ段数のクライアントが複数存在する場合にはもっとも少ない段数のクライアント群の中から２つ接続先候補（Ｌ２）として選択し、同じ段数のクライアントが存在しない場合は最も少ない段数のクライアント・サーバを１つだけ接続先候補（Ｌ２）として選択する。
【００５５】
接続先候補送信部では接続先候補（Ｌ２）のクライアント・コンテンツ配信サーバのＩＰアドレスをＭ２メッセージのフォーマットに格納し、Ｍ１発信元に送信する。
【００５６】
上記の処理を経てクライアントリストからＬ２に至るまでの推移例を図１０に示す。接続先候補抽出部においてクライアントリストから１０．１．１．１１を除外したものがＬ１となっている。これは１０．１．１．１１の稼動状態がＤｏｗｎであるためである。また接続先候補絞り込み部において、まず段数が３である１０．１．１．１６、１０．１．１．１７が除外され、さらに同じ段数のクライアントが複数存在する（段数１のクライアント：１０．１．１．１２、１０．１．１．１３、段数２のクライアント：１０．１．１．１４、１０．１．１．１５）ため、同じ段数のクライアントが存在しない段数０の１０．１．１．１０は候補から除外される。段数１および段数２であるクライアントがそれぞれ複数存在するため、図９のフローに従い、より段数の少ない段数１のクライアントを２つ接続先候補（Ｌ２）として選択する。その結果接続先候補（Ｌ２）は１０．１．１．１２、１０．１．１．１３の２クライアントとなる。
【００５７】
実施例１によって、図２に示すコンテンツ配信ツリーを形成し、コンテンツ配信サーバだけではなくクライアント装置も使用することで、コンテンツ配信サーバの配信負荷を軽減できるため、効率の良いストリーミング配信が可能となる。
【００５８】
また、クライアントの構成からも類推できる通り、１度クライアント（Ｃ１）を経由するストリームは、クライアント装置（Ｃ１）で存在するＣ０用バッファやＣ２送出用バッファなどの存在により大きく遅延する可能性が高く、ネットワークトラヒックに十分余裕がある場合、遅延時間は経由するクライアント装置数にほぼ比例する。そこで実施例１による構成では同じ段数（同じ経由クライアント数）のストリームを二重に受信するよう接続先候補を選択する。これによりＣ０、Ｃ０’それぞれのバッファにほぼ同時刻に同じシーケンス番号のパケットが格納されるため、片方の通信障害が発生しても極めて短い時間で障害が発生しないほうのバッファを有効とする切替え処理が実行でき、次段に接続されるクライアント（Ｃ２）に対しては通信障害が伝搬しないコンテンツ配信系を構築することが可能となる。
【００５９】
（実施例２）
実施例１において、クライアントＣ１が接続している２つのクライアントＣ０、Ｃ０’のうちどちらか１つからストリームが配信されなくなった場合の対処方式を実施例２で提示する。
【００６０】
図１１に実施例２におけるクライアント（Ｃ１）の構成を示す。実施例１におけるクライアント（Ｃ１）とは品質チェック部が存在する部分が異なる。品質チェック部はＣ０バッファおよびＣ０’用バッファを監視し、ストリームの品質劣化を検知する。品質チェック部ではそれぞれのバッファ毎に隣り合うシーケンスナンバーを持つパケットの到着間隔を測定し、所定の値を上回る場合品質劣化として検出する。
【００６１】
あるバッファに入力されるストリームが品質劣化として検出された場合、図１２に示すフローに従って動作する。まず、クライアント（Ｃ１）は当該バッファに格納されるパケットを送信している接続先との接続を切断する。その際、当該バッファがそれまでの有効なバッファであった場合はもう一方のバッファを有効なバッファと再決定する。再決定後、図１３に示すようにパケットのシーケンス番号がシームレスにＣ２バッファに流入するように各バッファのパケット送出タイミングを制御する。図１３ではシーケンス番号２０１番のパケットまではバッファＢからＣ２向けバッファに転送され、２０２番のパケットからはバッファＢ’からＣ２向けバッファに転送される。また再決定後並行してクライアント（Ｃ１）は図５に示すＭ１フォーマットのうち「部分リカバリ」フォーマットでトポロジ制御サーバに再接続先を問い合わせる。以降は図４に示すシーケンスと同様なシーケンスを辿るが、通知される接続先は一つのみである。
【００６２】
実施例２におけるトポロジ制御サーバの構成は図７と同様である。実施例１とは接続先候補絞り込み部のフローが図１４に変更となる部分が異なる。このフローは、まずＣ１の段数を調べ、その段数−１である段数のクライアント・コンテンツ配信サーバのみを候補とし、この中から切断したクライアント・コンテンツ配信サーバ及び現時点でＣ１と接続しているクライアント・コンテンツ配信サーバを除外し、残った候補の名から１つを選択し接続先候補（Ｌ２）とする。
【００６３】
上記の処理を経てクライアントリストからＬ２に至るまでの推移例を図１５に示す。Ｃ１はＣ０およびＣ０’からストリームを受信し、ある瞬間にＣ０が停止したものとする。Ｃ０が停止したためにクライアントリストのＣ０の稼動状態がＤｏｗｎとなる。接続先候補抽出部によってクライアントリストからＣ０（１０．１．１．１１）を除外したものをＬ１とする。接続先絞り込み部において、まずＬ１からＣ１（１０．１．１．１４）の段数を取得し、Ｃ１の段数２から１を引いた段数１のクライアントのみを接続先候補とし、さらに切断したクライアントＣ０（１０．１．１．１１）および現在接続しているクライアントＣ０’（１０．１．１．１２）を除外する。最後に残った接続先候補がＣ０’’（１０．１．１．１３）１つであるため、これが接続先候補（Ｌ２）となる。
【００６４】
実施例２によって、上位のコンテンツ配信サーバ・クライアントの片方に品質劣化が発生しても、下位のクライアントに対してはストリーム品質を劣化させることなく上位に対する接続本数を復旧することが可能となる。
【００６５】
（実施例３）
実施例１または２において、クライアントＣ１が接続している２つのクライアントＣ０、Ｃ０’のどちらの接続も切断した場合の対処方式を実施例３で提示する。
【００６６】
実施例３におけるクライアント（Ｃ１）の構成は実施例２におけるクライアント（Ｃ１）の構成と同様である（図１１参照）。クライアントＣ１が接続している２つのクライアントＣ０、Ｃ０’のどちらの接続も切断した場合の対処方式は図１６に示すシーケンスに従う。クライアントＣ１は前段クライアント・コンテンツ配信サーバ（Ｃ０、Ｃ０’）との接続を切断した後、Ｃ１に接続されている全ての次段クライアント（Ｃ２、Ｃ２’、Ｃ２’’）との接続を切断する。その後再度コンテンツ取得要求をトポロジ制御装置（Ｔ）に対し実施する。この場合、コンテンツ取得要求Ｍ１は「再接続」のフォーマットで送信する。
【００６７】
実施例３において、クライアント（Ｃ１）の前段クライアント・コンテンツ配信サーバの接続を切断した時には次段のクライアントの接続を切断する理由について以下に説明する。次段クライアントの切断を行わずに再コンテンツ取得要求を実施した結果、切断前の前段の段数と異なる段数の接続先が選択されたとする。このようなケースでは図１７に示す通りＣ１の次段のクライアント（Ｃ２）において、二重に受信するストリームの段数がそれぞれ異なってしまう。図１７（ａ）の例ではＣ１から受信したストリームの段数は２、Ｃ１’から受信したストリームの段数は３である。これは二重に受信したストリームの遅延差が大きくなり、片方のストリームに通信異常が発生した時のシームレスなバッファの切替が困難となることを示している。一方実施例２に示すような部分リカバリフォーマットのＭ１を使う方式を拡張し、以前接続していた前段のクライアント・コンテンツ配信サーバとおなじ段数のクライアント・コンテンツ配信サーバを選択することで次段以降におけるストリームの遅延差を抑制する案もあり得る。しかし、図１７（ｂ）に示す通り特にＣ１が比較的少ない段数であった場合、その上位のクライアント・コンテンツ配信サーバが２つとも選択候補から除外されるため、接続先候補の数が著しく少ない可能性が高く、結果としてストリーム配信を再開できない恐れがある。図１７（ｂ）の例では２段目のＣ１であり３台ある１段目のクライアントのうち２台（Ｃ０、Ｃ０’）が停止し、残りの一台（Ｃ０’’）の最大接続数が３であることからＣ１を接続させることが不可能である。
【００６８】
従って実施例３では、一度次段の接続を切断し再度新規接続を行うことによって、接続先候補を増やし、再接続成功確立を向上させている。また、次段クライアントの接続を切断することによる影響が懸念されるが、次段のクライアントもまた二重にストリームを受信しているため、次段クライアント自身におけるコンテンツ閲覧および次段クライアントによるコンテンツ転送に及ぼす影響は極めて少ないと考えられる。図１８の例では１段目のクライアント（Ｃ０、Ｃ０’）が停止したため、Ｃ１は次段のクライアント（Ｃ２、Ｃ２’、Ｃ２’’）との接続を切断し、再度コンテンツ取得要求をトポロジ制御サーバ（Ｔ）に対して発行し、接続先候補として選択されたコンテンツ配信サーバ（Ｓ）に接続する。これにより再接続前は２段目であったクライアントＣ１が再接続後は１段に変更となる。また２段目のクライアントはすべてＣ０’’のみからストリームを受信していたが、実施例２の方法によりＣ１からもストリームを受信するようになる。
【００６９】
実施例３におけるトポロジ制御装置（Ｔ）の構成はほぼ図７に示すとおりであるが、接続先候補絞り込み部においてＬ１から切断したクライアント・コンテンツ配信サーバを除外し、残った候補の名から２つを選択し接続先候補（Ｌ２）とする点が異なる。
【００７０】
上記のとおり実施例３によって、クライアントＣ１が接続している２つのクライアントＣ０、Ｃ０’のどちらの接続も切断した場合、Ｃ１に対する再接続確立を向上させ、かつ次段クライアント（Ｃ２、Ｃ２’、Ｃ２’’）における段数の不整合を抑制することが可能となる。
【００７１】
（実施例４）
実施例１または２において、クライアントＣ１が接続している２つのクライアントＣ０、Ｃ０’のどちらの接続も切断した場合の対処方式を実施例４で提示する。
【００７２】
実施例４におけるクライアント（Ｃ１）の構成は実施例２におけるクライアント（Ｃ１）の構成と同様である（図１１参照）。クライアントＣ１が接続している２つのクライアントＣ０、Ｃ０’のどちらの接続も切断した場合の対処方式は図１９に示すシーケンスに従う。クライアントＣ１は前段装置（Ｃ０、Ｃ０’）との接続を切断した後、クライアントリストを用いて前段装置のどれか一つでも稼動中のものがあれば一定時間待ち状態となり、一定時間内に前段装置からのストリームが再開されたら受信継続し、一定時間内に前段装置からのストリームが再開されない場合は実施例３の方法で再接続を試みる。
【００７３】
実施例４におけるトポロジ制御装置（Ｔ）の構成は実施例３におけるトポロジ制御装置の構成と同様である。
【００７４】
本特許に記載の発明による方式は条件によってはほとんどのクライアントにおいて二重にストリームを受信できないケースが発生し得る。そのようなケースで実施例３による方式のみで再接続を試みると、図２０に示すように次段（Ｃ２、Ｃ２’）においても単一のストリームを受信しているだけなので、Ｃ２、Ｃ２’のＣ１に対する接続も切断され、計３件の再接続先要求が発生する。さらにＣ２やＣ２’配下にもクライアント装置が接続していた場合は、そのクライアント装置に対しても切断処理が発生するため、切断処理が広く波及し再接続先要求が大量に発生する恐れがある。このような問題に対し、実施例４て提示したように一定時間ストリームが再開されるまで再接続処理を待つことで、実施例３の方式のみで再接続を試みる場合と比べ次段への切断処理の波及を最小限に留めることが可能となる。
【００７５】
（実施例５）
実施例１から４までは接続先選択の基準として送信しようとしているストリームの経由クライアント数（段数）を用いていたが、これはストリームの遅延はほぼ経由クライアント数に比例し、また発生する遅延量は全てのクライアントで等しいことを前提とした方法である。実際にはクライアント間のネットワークの遅延やクライアントの能力差などを考慮する必要があるため、段数以外のより本質的な量を用いた接続先選択を実施する方法が必要である。実施例５ではこのような課題に対し、送信しようとしているストリーム（パケット）のシーケンス番号を用いる方式を提示する。
【００７６】
コンテンツ配信サーバ（Ｓ）、クライアント（Ｃ１）の構成は実施例１と同様である。
【００７７】
またトポロジ制御サーバ（Ｔ）の構成も基本的には実施例１と同様であるが、以下の点が異なる。
【００７８】
クライアントリストテーブルの構成を図２１に示す。クライアントリストテーブルはコンテンツ毎に用意され、情報要素は稼動状態、送出可能なシーケンス番号（ｐ）、シーケンス番号ｐが送出可能となった時刻（ｔ）である。ここで図２２を例にｐおよびｔを解説する。図２２はコンテンツ配信サーバＳからストリームを受信するＣ０、Ｃ０’、Ｃ０’’の送出バッファ、およびＣ０、Ｃ０’からコンテンツを受信するＣ１の受信バッファ（Ｂ１、Ｂ２）を図示している。ＳおよびＣ０、Ｃ０’Ｃ０’’の送出バッファをみると、それぞれシーケンス番号５１２、５０８、５０７、５０４が送出可能な状態となっている。これらのパケットがそれ以前のシーケンス番号を持つパケットが送出されたことで初めて送出可能となった時刻をエポック値（１９７０年１月１日からの経過秒数）で表記し、これをｔとし、この時のｐの値を送出可能なシーケンス番号とする。
【００７９】
また、接続先候補絞り込み部においては、下記の式によって前記ｔ、ｐからある時刻ｔ’おけるシーケンス番号予測値ｐ’を求める。
【００８０】
【式１】
2004246790.tif 000003
ただし、Ｒｂをストリームのビットレート［ｂｐｓ］、Ｌｐを１パケットあたりの長さ［Ｂｙｔｅ］とする。以下の説明では例としてＲｂ＝２４［ｋｂｐｓ］、Ｌｐ＝１．５［ｋＢ］とし、
【００８１】
【式２】
2004246790.tif 000004
とする。接続先候補絞り込み部では図２３に示すＬ１に記載の全てのコンテンツ配信サーバ・クライアント毎に、ある参照時刻ｔ’＝１０３９７６６０００におけるシーケンス番号予測値ｐ’を式２から求める。また求めたｐ’のうち奇数のものは＋１し、偶数値に丸める。これらの計算結果を図２３に併記する。これらの計算結果を元に図２４に示すシーケンスで示される接続先候補選択ポリシによって接続先候補（Ｌ２）を求める。図２４に示す接続先候補選択ポリシによれば、図２３に示すように同じシーケンス番号予測値（ｐ’）を持つクライアント群が二組（ｐ’＝５１４  Ｃ０、Ｃ０’）、（ｐ’＝５０８  Ｃ０’’、Ｃ１）存在する場合、最も大きなシーケンス番号予測値（ｐ’）を持つ（ｐ’＝５１４  Ｃ０、Ｃ０’）の中から二つのクライアント装置を接続先候補（Ｌ２）として出力する。従って、図２３に示す例ではＣ０（１０．１．１．１１）およびＣ０’（１０．１．１．１２）を接続候補（Ｌ２）として出力する。
【００８２】
実施例５で示した通り、ストリームが経由するクライアント数という間接的な値で接続先候補を求めるのではなく、より実測値に近い値（送出可能なパケットのシーケンス番号）に基づいて接続先候補を求めることにより、前段クライアント・コンテンツ配信サーバのどちらか一方を切断しても、当該クライアント上におけるコンテンツ閲覧や次段へのストリーム転送に及ぼす影響を最小限にすることが可能となる。
【００８３】
以上本発明の実施例を具体的に説明してきたが、本発明は、前記実施例に限定されるものではなく、その要旨を逸脱しない範囲において種種変更可能であることは勿論である。
【００８４】
【発明の効果】
以上説明した通り通り、本発明によって、ピア・トゥ・ピア型コンテンツ配信を実施する際、あるクライアントに対し情報を送信するサーバあるいはコンテンツ配信可能なクライアントの中から最適な接続先を選択する手段を提供し、ユーザに対し中断、スキップ、後戻りなどが発生しない高品質なサービスを提供することが可能になる。
【図面の簡単な説明】
【図１】本発明の概略を示す図である。
【図２】実施例１で形成されるコンテンツ配信ツリーを示す図である。
【図３】実施例１におけるコンテンツ配信サーバ（Ｓ）の構成、およびパケットフォーマットを示す図である。
【図４】実施例１においてクライアント装置（Ｃ１）が配信ツリーに接続する時のシーケンスを示す図である。
【図５】実施例１においてクライアント装置（Ｃ１）とトポロジ制御サーバ（Ｔ）、接続先のクライアント（Ｃ０、Ｃ０’）とでやりとりされるメッセージのフォーマットを示す図である。
【図６】実施例１におけるクライアント装置（Ｃ１）の構成を示す図である。
【図７】実施例１におけるトポロジ制御サーバ（Ｔ）の構成を示す図である。
【図８】実施例１におけるトポロジ制御サーバ内のクライアントリストテーブルの構成を示す図である。
【図９】実施例１におけるトポロジ制御サーバ内の接続先候補絞り込み部の動作フローを示す図である。
【図１０】実施例１におけるクライアントリスト、Ｌ１、Ｌ２への推移例を示す図である。
【図１１】実施例２におけるクライアント装置（Ｃ１）の構成を示す図である。
【図１２】実施例２におけるクライアント装置（Ｃ１）の動作フローを示す図である。
【図１３】実施例２におけるクライアント装置（Ｃ１）でのバッファ切替の例を示す図である。
【図１４】実施例２におけるトポロジ制御サーバ内の接続先候補絞り込み部の動作フローを示す図である。
【図１５】実施例２におけるクライアントリスト、Ｌ１、Ｌ２への推移例を示す図である。
【図１６】実施例３におけるクライアント装置（Ｃ１）の動作フローを示す図である。
【図１７】実施例３によるコンテンツ配信ツリー再構成以外の方法を用いる場合の例を示す図である。
【図１８】実施例３におけるコンテンツ配信ツリー再構成例を示す図である。
【図１９】実施例４におけるクライアント装置（Ｃ１）の動作フローを示す図である。
【図２０】実施例４における再接続要求処理の波及範囲を示す図である。
【図２１】実施例５におけるトポロジ制御サーバ内のクライアントリストテーブルの構成を示す図である。
【図２２】実施例５における送出可能なシーケンス番号（ｐ）、シーケンス番号ｐが送出可能となった時刻（ｔ）を説明する図である。
【図２３】実施例５におけるＬ１および任意時刻（ｔ’）におけるシーケンス番号予測値（ｐ’）の計算結果を示す図である。
【図２４】実施例５における接続再候補選択ポリシを示す図である。
【符号の説明】
Ａ…コンテンツ、Ｃ…クライアント装置群、Ｃ１…クラインアント装置、Ｃ０、Ｃ０’…Ｃ１に対しコンテンツを配信する装置、Ｃ２…Ｃ１からコンテンツを受信するクライアント装置、Ｓ…コンテンツ配信装置（サーバ）、Ｔ…トポロジ制御装置（サーバ）
【図１】
2004246790.tif 000005
【図２】
2004246790.tif 000006
【図３】
2004246790.tif 000007
【図４】
2004246790.tif 000008
【図５】
2004246790.tif 000009
【図６】
2004246790.tif 000010
【図７】
2004246790.tif 000011
【図８】
2004246790.tif 000012
【図９】
2004246790.tif 000013
【図１０】
2004246790.tif 000014
【図１１】
2004246790.tif 000015
【図１２】
2004246790.tif 000016
【図１３】
2004246790.tif 000017
【図１４】
2004246790.tif 000018
【図１５】
2004246790.tif 000019
【図１６】
2004246790.tif 000020
【図１７】
2004246790.tif 000021
【図１８】
2004246790.tif 000022
【図１９】
2004246790.tif 000023
【図２０】
2004246790.tif 000024
【図２１】
2004246790.tif 000025
【図２２】
2004246790.tif 000026
【図２３】
2004246790.tif 000027
【図２４】
2004246790.tif 000028