(57)【要約】【課題】本来のデータに影響することなく帯域の測定を行うようにする。【解決手段】サーバは、クライアントに対し、シーケンス番号１乃至４のＲＴＰパケットを送信した後、ＦＥＣパケット１，２をバックツーバックで送信する。クライアントは、ＦＥＣパケット１，２の受信時刻Ｔ１，Ｔ２の間隔から、ボトルネックリンクの帯域を算出し、算出結果をパケット化した報告パケット１，２をバックツーバックでサーバに送信する。サーバは、報告パケット１，２の受信時刻の間隔から、ボトルネックリンクの帯域を算出する。そして、サーバは、算出したボトルネックリンクの帯域と、報告パケットに埋め込まれたボトルネックリンクの帯域を比較し、その比較結果に基づいて、転送レートの調整を行う。本発明は、ストリーミング配信に適用できる。【選択図】      図１８
2004266741.tif 000002
【特許請求の範囲】
【請求項１】
データを送信する送信装置と、ネットワークを介して前記データを受信する受信装置とからなる配信システムにおいて、
前記送信装置は、前記データをパケット化し、前記パケット化された前記データに基づいて冗長データを作成し、前記冗長データをパケット化し、前記受信装置に対し、前記パケット化されたデータを送信した後、前記パケット化された冗長データを続けて２つ送信し、
前記受信装置は、前記送信装置から送信されてきた前記２つのパケット化された冗長データを受信し、その受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出し、算出結果を埋め込んだ報告パケットを作成し、前記送信装置に対し、前記報告パケットを続けて２つ送信し、
前記送信装置は、前記受信装置から送信されてきた前記２つの報告パケットを受信し、その受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出し、その算出結果と、前記報告パケットに埋め込まれている算出結果との比較結果に応じて、転送レートを調整することを特徴とする配信システム。
【請求項２】
ネットワークを介してデータを送信する送信装置において、
前記データをパケット化する第１のパケット化手段と、
前記第１のパケット化手段によりパケット化された前記データに基づいて、冗長データを作成する作成手段と、
前記作成手段により作成された前記冗長データをパケット化する第２のパケット化手段と、
前記受信装置に対し、前記第１のパケット化手段によりパケット化された前記データを送信した後、前記第２のパケット化手段によりパケット化された前記冗長データを続けて２つ送信する送信手段と、
前記受信装置から送信されてきた２つの報告パケットを受信する受信手段と、前記受信手段により受信された前記２つの報告パケットの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出手段と、
前記算出手段による算出結果と、前記報告パケットに埋め込まれている、前記受信装置により算出された前記ネットワークのボトルネックリンクの帯域の算出結果を比較する比較手段と、
前記比較手段による比較結果に応じて、転送レートを調整する調整手段とを備えることを特徴とする送信装置。
【請求項３】
前記第１のパケット化手段は、１フレーム分の前記データをパケット化することを特徴とする請求項２に記載の送信装置。
【請求項４】
前記作成手段は、前記第１のパケット化手段によりパケット化されたデータのうち、２つ以上のデータに基づいて、前記冗長データを作成することを特徴とする請求項２に記載の送信装置。
【請求項５】
前記比較手段により、前記報告パケットに埋め込まれている算出結果が、前記算出手段により算出された前記ネットワークのボトルネックリンクの帯域より大きいと判断された場合、前記調整手段は、前記算出手段により算出された前記ネットワークのボトルネックリンクの帯域に基づいて、前記転送レートを調整することを特徴とする請求項２に記載の送信装置。
【請求項６】
前記比較手段により、前記報告パケットに埋め込まれている算出結果が、前記算出手段により算出された前記ネットワークのボトルネックリンクの帯域より小さいと判断された場合、前記調整手段は、前記報告パケットに埋め込まれている前記ネットワークのボトルネックリンクの帯域に基づいて、前記転送レートを調整することを特徴とする請求項２に記載の送信装置。
【請求項７】
ネットワークを介してデータを送信する送信装置の送信方法において、
前記データをパケット化する第１のパケット化ステップと、
前記第１のパケット化ステップの処理によりパケット化された前記データに基づいて、冗長データを作成する作成ステップと、
前記作成ステップの処理により作成された前記冗長データをパケット化する第２のパケット化ステップと、
前記受信装置に対し、前記第１のパケット化ステップの処理によりパケット化された前記データを送信した後、前記第２のパケット化ステップの処理によりパケット化された前記冗長データを続けて２つ送信する送信ステップと、
前記受信装置から送信されてきた２つの報告パケットを受信する受信ステップと、
前記受信ステップの処理により受信された前記２つの報告パケットの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果と、前記報告パケットに埋め込まれている、前記受信装置により算出された前記ネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、
前記比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとを含むことを特徴とする送信方法。
【請求項８】
ネットワークを介してデータを送信する送信処理を、コンピュータに行わせるプログラムにおいて、
前記データをパケット化する第１のパケット化ステップと、
前記第１のパケット化ステップの処理によりパケット化された前記データに基づいて、冗長データを作成する作成ステップと、
前記作成ステップの処理により作成された前記冗長データをパケット化する第２のパケット化ステップと、
前記受信装置に対し、前記第１のパケット化ステップの処理によりパケット化された前記データを送信した後、前記第２のパケット化ステップの処理によりパケット化された前記冗長データを続けて２つ送信する送信ステップと、
前記受信装置から送信されてきた２つの報告パケットを受信する受信ステップと、
前記受信ステップの処理により受信された前記２つの報告パケットの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果と、前記報告パケットに埋め込まれている、前記受信装置により算出された前記ネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、
前記比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとを含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項９】
ネットワークを介してデータを送信する送信処理を、コンピュータに行わせるプログラムにおいて、
前記データをパケット化する第１のパケット化ステップと、
前記第１のパケット化ステップの処理によりパケット化された前記データに基づいて、冗長データを作成する作成ステップと、
前記作成ステップの処理により作成された前記冗長データをパケット化する第２のパケット化ステップと、
前記受信装置に対し、前記第１のパケット化ステップの処理によりパケット化された前記データを送信した後、前記第２のパケット化ステップの処理によりパケット化された前記冗長データを続けて２つ送信する送信ステップと、
前記受信装置から送信されてきた２つの報告パケットを受信する受信ステップと、
前記受信ステップの処理により受信された前記２つの報告パケットの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果と、前記報告パケットに埋め込まれている、前記受信装置により算出された前記ネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、
前記比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項１０】
ネットワークを介してデータを受信する受信装置において、
送信装置から送信されてきた前記データを受信する受信手段と、
前記受信手段により受信された前記データが冗長データであるか否かを判定する判定手段と、
前記判定手段により前記データが冗長データであると判定された場合、２つの前記冗長データの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出手段と、
前記算出手段による算出結果を埋め込んだ報告パケットを作成する作成手段と、
前記送信装置に対し、前記作成手段により作成された前記報告パケットを続けて２つ送信する送信手段とを備えることを特徴とする受信装置。
【請求項１１】
前記受信手段は、１フレーム分の前記データを受信することを特徴とする請求項１０に記載の受信装置。
【請求項１２】
ネットワークを介してデータを受信する受信装置の受信方法において、
送信装置から送信されてきた前記データを受信する受信ステップと、
前記受信ステップの処理により受信された前記データが冗長データであるか否かを判定する判定ステップと、
前記判定ステップの処理により前記データが冗長データであると判定された場合、２つの前記冗長データの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、
前記送信装置に対し、前記作成ステップの処理により作成された前記報告パケットを続けて２つ送信する送信ステップとを含むことを特徴とする受信方法。
【請求項１３】
ネットワークを介してデータを受信する受信処理を、コンピュータに行わせるプログラムにおいて、
送信装置から送信されてきた前記データを受信する受信ステップと、
前記受信ステップの処理により受信された前記データが冗長データであるか否かを判定する判定ステップと、
前記判定ステップの処理により前記データが冗長データであると判定された場合、２つの前記冗長データの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、
前記送信装置に対し、前記作成ステップの処理により作成された前記報告パケットを続けて２つ送信する送信ステップとを含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項１４】
ネットワークを介してデータを受信する受信処理を、コンピュータに行わせるプログラムにおいて、
送信装置から送信されてきた前記データを受信する受信ステップと、
前記受信ステップの処理により受信された前記データが冗長データであるか否かを判定する判定ステップと、
前記判定ステップの処理により前記データが冗長データであると判定された場合、２つの前記冗長データの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、
前記送信装置に対し、前記作成ステップの処理により作成された前記報告パケットを続けて２つ送信する送信ステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項１５】
データを送信する送信装置と、ネットワークを介して前記データを受信する受信装置とからなる配信システムにおいて、
前記送信装置は、前記データをパケット化し、前記パケット化された前記データのうち、所定の２つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、前記オリジナルデータ以外にパディングデータを書き込んで最大サイズにし、前記受信装置に対し、拡張された前記最大サイズの２つのパケットを含む前記パケット化されたデータを送信し、
前記受信装置は、前記送信装置から送信されてきた前記２つの最大サイズのパケットを受信し、その受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出し、算出結果を埋め込んだ報告パケットを作成し、前記送信装置に対し、前記報告パケットを続けて２つ送信し、
前記送信装置は、前記受信装置から送信されてきた前記２つの報告パケットを受信し、その受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出し、その算出結果と、前記報告パケットに埋め込まれている算出結果との比較結果に応じて、転送レートを調整することを特徴とする配信システム。
【請求項１６】
ネットワークを介してデータを送信する送信装置において、
前記データをパケット化するパケット化手段と、
前記パケット化手段によりパケット化された前記データのち、所定の２つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、前記オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張手段と、
前記受信装置に対し、前記拡張手段により拡張された前記最大サイズの２つのパケットを含む、前記パケット化手段によりパケット化された前記データを送信する送信手段と、
前記受信装置から送信されてきた２つの報告パケットを受信する受信手段と、前記受信手段により受信された前記２つの報告パケットの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出手段と、
前記算出手段による算出結果と、前記報告パケットに埋め込まれている、前記受信装置により算出された前記ネットワークのボトルネックリンクの帯域の算出結果を比較する比較手段と、
前記比較手段による比較結果に応じて、転送レートを調整する調整手段とを備えることを特徴とする送信装置。
【請求項１７】
前記パケット化手段は、１フレーム分の前記データをパケット化することを特徴とする請求項１６に記載の送信装置。
【請求項１８】
前記所定の２つのパケットは、前記パケット化手段によりパケット化された前記データの先頭２つのパケットであることを特徴とする請求項１６に記載の送信装置。
【請求項１９】
前記比較手段により、前記報告パケットに埋め込まれている算出結果が、前記算出手段により算出された前記ネットワークのボトルネックリンクの帯域より大きいと判断された場合、前記調整手段は、前記算出手段により算出された前記ネットワークのボトルネックリンクの帯域に基づいて、前記転送レートを調整することを特徴とする請求項１６に記載の送信装置。
【請求項２０】
前記比較手段により、前記報告パケットに埋め込まれている算出結果が、前記算出手段により算出された前記ネットワークのボトルネックリンクの帯域より小さいと判断された場合、前記調整手段は、前記報告パケットに埋め込まれている前記ネットワークのボトルネックリンクの帯域に基づいて、前記転送レートを調整することを特徴とする請求項１６に記載の送信装置。
【請求項２１】
ネットワークを介してデータを送信する送信装置の送信方法において、
前記データをパケット化するパケット化ステップと、
前記パケット化ステップの処理によりパケット化された前記データのち、所定の２つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、前記オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張ステップと、
前記受信装置に対し、前記拡張ステップの処理により拡張された前記最大サイズの２つのパケットを含む、前記パケット化ステップの処理によりパケット化された前記データを送信する送信ステップと、
前記受信装置から送信されてきた２つの報告パケットを受信する受信ステップと、
前記受信ステップの処理により受信された前記２つの報告パケットの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果と、前記報告パケットに埋め込まれている、前記受信装置により算出された前記ネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、
前記比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとを含むことを特徴とする送信方法。
【請求項２２】
ネットワークを介してデータを送信する送信処理を、コンピュータに行わせるプログラムにおいて、
前記データをパケット化するパケット化ステップと、
前記パケット化ステップの処理によりパケット化された前記データのち、所定の２つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、前記オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張ステップと、
前記受信装置に対し、前記拡張ステップの処理により拡張された前記最大サイズの２つのパケットを含む、前記パケット化ステップの処理によりパケット化された前記データを送信する送信ステップと、
前記受信装置から送信されてきた２つの報告パケットを受信する受信ステップと、
前記受信ステップの処理により受信された前記２つの報告パケットの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果と、前記報告パケットに埋め込まれている、前記受信装置により算出された前記ネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、
前記比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとを含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項２３】
ネットワークを介してデータを送信する送信処理を、コンピュータに行わせるプログラムにおいて、
前記データをパケット化するパケット化ステップと、
前記パケット化ステップの処理によりパケット化された前記データのち、所定の２つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、前記オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張ステップと、
前記受信装置に対し、前記拡張ステップの処理により拡張された前記最大サイズの２つのパケットを含む、前記パケット化ステップの処理によりパケット化された前記データを送信する送信ステップと、
前記受信装置から送信されてきた２つの報告パケットを受信する受信ステップと、
前記受信ステップの処理により受信された前記２つの報告パケットの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果と、前記報告パケットに埋め込まれている、前記受信装置により算出された前記ネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、
前記比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項２４】
ネットワークを介してデータを受信する受信装置において、
送信装置から送信されてきた前記データを受信する受信手段と、
前記受信手段により受信された前記データに拡張領域が含まれているか否かを判定する判定手段と、
前記判定手段により前記データに拡張領域が含まれていると判定された場合、前記拡張領域を含む２つのデータの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出手段と、
前記算出手段による算出結果を埋め込んだ報告パケットを作成する作成手段と、
前記送信装置に対し、前記作成手段により作成された前記報告パケットを続けて２つ送信する送信手段とを備えることを特徴とする受信装置。
【請求項２５】
前記受信手段は、１フレーム分の前記データを受信することを特徴とする請求項２４に記載の受信装置。
【請求項２６】
ネットワークを介してデータを受信する受信装置の受信方法において、
送信装置から送信されてきた前記データを受信する受信ステップと、
前記受信ステップの処理により受信された前記データに拡張領域が含まれているか否かを判定する判定ステップと、
前記判定ステップの処理により前記データに拡張領域が含まれていると判定された場合、前記拡張領域を含む２つのデータの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、
前記送信装置に対し、前記作成ステップの処理により作成された前記報告パケットを続けて２つ送信する送信ステップとを含むことを特徴とする受信方法。
【請求項２７】
ネットワークを介してデータを受信する受信処理を、コンピュータに行わせるプログラムにおいて、
送信装置から送信されてきた前記データを受信する受信ステップと、
前記受信ステップの処理により受信された前記データに拡張領域が含まれているか否かを判定する判定ステップと、
前記判定ステップの処理により前記データに拡張領域が含まれていると判定された場合、前記拡張領域を含む２つのデータの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、
前記送信装置に対し、前記作成ステップの処理により作成された前記報告パケットを続けて２つ送信する送信ステップとを含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項２８】
ネットワークを介してデータを受信する受信処理を、コンピュータに行わせるプログラムにおいて、
送信装置から送信されてきた前記データを受信する受信ステップと、
前記受信ステップの処理により受信された前記データに拡張領域が含まれているか否かを判定する判定ステップと、
前記判定ステップの処理により前記データに拡張領域が含まれていると判定された場合、前記拡張領域を含む２つのデータの受信時刻に基づいて、前記ネットワークのボトルネックリンクの帯域を算出する算出ステップと、
前記算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、
前記送信装置に対し、前記作成ステップの処理により作成された前記報告パケットを続けて２つ送信する送信ステップとをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、配信システム、送信装置および方法、受信装置および方法、記録媒体、並びにプログラムに関し、特に、例えば、ストリーミング配信において、ボトルネックリンクの帯域を推測し、転送レートを調整することができるようにした配信システム、送信装置および方法、受信装置および方法、記録媒体、並びにプログラムに関する。
【０００２】
【従来の技術】
従来、インターネットを通じてリアルタイムに動画像データなどの転送を行うことをストリーミングと呼ぶ。ストリーミングを行うためのデータの転送方式として、主に、ＲＴＰ（Ｒｅａｌ−Ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）が用いられている。
【０００３】
このＲＴＰでは、ストリーミングのデータ転送を行う際に、転送レートを指定することができる。通常、ストリーミングデータを受け取るユーザは、転送レートを重視するよりも、最高の画質で視聴できることを望んでいる。
【０００４】
しかしながら、サーバからクライアント（ユーザ）までのネットワーク間において、最低の転送レートに合わせて転送しないと、ネットワークの容量を超えて転送することになり、パケットロスが生じてしまう。ここで、サーバからクライアントまでのネットワーク間における最低のリンクスピードを、ネットワークのボトルネックリンクと呼ぶ。
【０００５】
すなわち、サーバは、ストリーミングを行うにあたり、ボトルネックリンクのスピードを推定する必要がある。
【０００６】
このボトルネックリンクのスピードの推定方法として、例えば、パケットペア（Ｐａｃｋｅｔ  Ｐａｉｒ）と呼ばれる手法が提案されている。
【０００７】
このパケットペア手法は、ボトルネックリンクの帯域予測方式の１つであり、例えば、図１に示されるように、送信側（サーバ）から受信側（クライアント）に対して、等しいパケットサイズの２つのパケット１，２を送信間隔を空けずに、いわゆるバックツーバック（ｂａｃｋ−ｔｏ−ｂａｃｋ）で転送し、ネットワークの伝送遅延により、ボトルネックリンクの帯域を測定するものである。
【０００８】
同図において、縦軸は時刻を示している。すなわち、時刻Ｔ１ｓは、パケット１の転送が終了するサーバ側の時刻を表わし、時刻Ｔ１は、パケット１の受信を完了するクライアント側の時刻を表わしている。同様に、時刻Ｔ２ｓは、パケット２の転送が終了するサーバ側の時刻を表わし、時刻Ｔ２は、パケット２の受信を完了するクライアント側の時刻を表わしている。
【０００９】
サーバから、一方が他方の直後に続くようなペアのパケット１，２を、ノード１，２を介してクライアントに転送すると、ノード１とノード２の間でパケットが時間軸方向に伸ばされる。このノード１とノード２の間がボトルネックリンクである。
【００１０】
クライアントは、１つ目のパケット１の到着時刻Ｔ１と２つ目のパケット２の到着時刻Ｔ２を測定することで、次式（１）に従い、ボトルネックリンクの帯域Ｂを算出することができる。ここで、Ｓは、パケット１およびパケット２のサイズ（大きさ）を表わしている。
帯域Ｂ＝Ｓ／（Ｔ２−Ｔ１）                                  ・・・（１）
【００１１】
また、このパケットペアをＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）に応用し、ＴＣＰのセッション開始時にボトルネックリンクのスピードを測定するようにしているものもある（特許文献１参照）。
【００１２】
【特許文献１】
特開２００２−９４５６７号公報
【００１３】
【発明が解決しようとする課題】
しかしながら、上述した特許文献１に開示されている技術においては、ボトルネックリンクの帯域を測定することはできるが、ストリーミング途中でネットワークの経路が変化した場合、ボトルネックリンクの帯域が変化するため、測定が困難になる。
【００１４】
また、クライアントが、ネットワークの経路の変化を検出し、検出結果をサーバに通知するようにしたとしても、サーバに通知するまでの応答時間が長くなってしまう。
【００１５】
そこで、ストリーミングデータをパケットペアで送信し、ボトルネックリンクのスピードを測定する手法が考えられる。
【００１６】
しかしながら、例えば、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）２などにおいて、Ｉフレーム、Ｐフレーム、Ｂフレームでは、それぞれデータのサイズが異なるため、転送パケットサイズが常に一定サイズであるとは限らない。すなわち、さまざまなデータサイズでストリーミングデータが転送されてしまうが、パケットペア手法では、２つのパケットのサイズが一定でないとボトルネックリンクの帯域を測定することができない。
【００１７】
また、２つのパケットをバーストに送信した場合、２つ目のパケットでパケットロスを引き起こす恐れがある。
【００１８】
さらに、ＲＴＰは、ＴＣＰとは異なり、確実なデータ転送の機能を有していないため、ネットワークでパケットロスが生じてしまうと、画像が乱れる、または、音声が途切れるなどの不具合が発生してしまう課題があった。
【００１９】
本発明はこのような状況に鑑みてなされたものであり、本来のデータに影響することなく帯域の測定を行うことができるようにするものである。
【００２０】
【課題を解決するための手段】
本発明の第１の配信システムは、送信装置は、データをパケット化し、パケット化されたデータに基づいて冗長データを作成し、冗長データをパケット化し、受信装置に対し、パケット化されたデータを送信した後、パケット化された冗長データを続けて２つ送信し、受信装置は、送信装置から送信されてきた２つのパケット化された冗長データを受信し、その受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出し、算出結果を埋め込んだ報告パケットを作成し、送信装置に対し、報告パケットを続けて２つ送信し、送信装置は、受信装置から送信されてきた２つの報告パケットを受信し、その受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出し、その算出結果と、報告パケットに埋め込まれている算出結果との比較結果に応じて、転送レートを調整することを特徴とする。
【００２１】
本発明の第１の送信装置は、データをパケット化する第１のパケット化手段と、第１のパケット化手段によりパケット化されたデータに基づいて、冗長データを作成する作成手段と、作成手段により作成された冗長データをパケット化する第２のパケット化手段と、受信装置に対し、第１のパケット化手段によりパケット化されたデータを送信した後、第２のパケット化手段によりパケット化された冗長データを続けて２つ送信する送信手段と、受信装置から送信されてきた２つの報告パケットを受信する受信手段と、受信手段により受信された２つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出手段と、算出手段による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較手段と、比較手段による比較結果に応じて、転送レートを調整する調整手段とを備えることを特徴とする。
【００２２】
前記第１のパケット化手段には、１フレーム分のデータをパケット化させるようにすることができる。
【００２３】
前記作成手段には、第１のパケット化手段によりパケット化されたデータのうち、２つ以上のデータに基づいて、冗長データを作成させるようにすることができる。
【００２４】
前記比較手段により、報告パケットに埋め込まれている算出結果が、算出手段により算出されたネットワークのボトルネックリンクの帯域より大きいと判断された場合、調整手段には、算出手段により算出されたネットワークのボトルネックリンクの帯域に基づいて、転送レートを調整させるようにすることができる。
【００２５】
前記比較手段により、報告パケットに埋め込まれている算出結果が、算出手段により算出されたネットワークのボトルネックリンクの帯域より小さいと判断された場合、調整手段には、報告パケットに埋め込まれているネットワークのボトルネックリンクの帯域に基づいて、転送レートを調整させるようにすることができる。
【００２６】
本発明の第１の送信方法は、データをパケット化する第１のパケット化ステップと、第１のパケット化ステップの処理によりパケット化されたデータに基づいて、冗長データを作成する作成ステップと、作成ステップの処理により作成された冗長データをパケット化する第２のパケット化ステップと、受信装置に対し、第１のパケット化ステップの処理によりパケット化されたデータを送信した後、第２のパケット化ステップの処理によりパケット化された冗長データを続けて２つ送信する送信ステップと、受信装置から送信されてきた２つの報告パケットを受信する受信ステップと、受信ステップの処理により受信された２つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとを含むことを特徴とする。
【００２７】
本発明の第１の記録媒体に記録されているプログラムは、データをパケット化する第１のパケット化ステップと、第１のパケット化ステップの処理によりパケット化されたデータに基づいて、冗長データを作成する作成ステップと、作成ステップの処理により作成された冗長データをパケット化する第２のパケット化ステップと、受信装置に対し、第１のパケット化ステップの処理によりパケット化されたデータを送信した後、第２のパケット化ステップの処理によりパケット化された冗長データを続けて２つ送信する送信ステップと、受信装置から送信されてきた２つの報告パケットを受信する受信ステップと、受信ステップの処理により受信された２つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとコンピュータに行わせることを特徴とする。
【００２８】
本発明の第１のプログラムは、データをパケット化する第１のパケット化ステップと、第１のパケット化ステップの処理によりパケット化されたデータに基づいて、冗長データを作成する作成ステップと、作成ステップの処理により作成された冗長データをパケット化する第２のパケット化ステップと、受信装置に対し、第１のパケット化ステップの処理によりパケット化されたデータを送信した後、第２のパケット化ステップの処理によりパケット化された冗長データを続けて２つ送信する送信ステップと、受信装置から送信されてきた２つの報告パケットを受信する受信ステップと、受信ステップの処理により受信された２つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとをコンピュータに行わせることを特徴とする。
【００２９】
本発明の第１の受信装置は、送信装置から送信されてきたデータを受信する受信手段と、受信手段により受信されたデータが冗長データであるか否かを判定する判定手段と、判定手段によりデータが冗長データであると判定された場合、２つの冗長データの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出手段と、算出手段による算出結果を埋め込んだ報告パケットを作成する作成手段と、送信装置に対し、作成手段により作成された報告パケットを続けて２つ送信する送信手段とを備えることを特徴とする。
【００３０】
前記受信手段には、１フレーム分のデータを受信させるようにすることができる。
【００３１】
本発明の第１の受信方法は、送信装置から送信されてきたデータを受信する受信ステップと、受信ステップの処理により受信されたデータが冗長データであるか否かを判定する判定ステップと、判定ステップの処理によりデータが冗長データであると判定された場合、２つの冗長データの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、送信装置に対し、作成ステップの処理により作成された報告パケットを続けて２つ送信する送信ステップとを含むことを特徴とする。
【００３２】
本発明の第２の記録媒体に記録されているプログラムは、送信装置から送信されてきたデータを受信する受信ステップと、受信ステップの処理により受信されたデータが冗長データであるか否かを判定する判定ステップと、判定ステップの処理によりデータが冗長データであると判定された場合、２つの冗長データの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、送信装置に対し、作成ステップの処理により作成された報告パケットを続けて２つ送信する送信ステップとをコンピュータに行わせることを特徴とする。
【００３３】
本発明の第２のプログラムは、送信装置から送信されてきたデータを受信する受信ステップと、受信ステップの処理により受信されたデータが冗長データであるか否かを判定する判定ステップと、判定ステップの処理によりデータが冗長データであると判定された場合、２つの冗長データの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、送信装置に対し、作成ステップの処理により作成された報告パケットを続けて２つ送信する送信ステップとをコンピュータに行わせることを特徴とする。
【００３４】
本発明の第２の配信システムは、送信装置は、データをパケット化し、パケット化されたデータのうち、所定の２つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、オリジナルデータ以外にパディングデータを書き込んで最大サイズにし、受信装置に対し、拡張された最大サイズの２つのパケットを含むパケット化されたデータを送信し、受信装置は、送信装置から送信されてきた２つの最大サイズのパケットを受信し、その受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出し、算出結果を埋め込んだ報告パケットを作成し、送信装置に対し、報告パケットを続けて２つ送信し、送信装置は、受信装置から送信されてきた２つの報告パケットを受信し、その受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出し、その算出結果と、報告パケットに埋め込まれている算出結果との比較結果に応じて、転送レートを調整することを特徴とする。
【００３５】
本発明の第２の送信装置は、データをパケット化するパケット化手段と、パケット化手段によりパケット化されたデータのち、所定の２つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張手段と、受信装置に対し、拡張手段により拡張された最大サイズの２つのパケットを含む、パケット化手段によりパケット化されたデータを送信する送信手段と、受信装置から送信されてきた２つの報告パケットを受信する受信手段と、受信手段により受信された２つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出手段と、算出手段による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較手段と、比較手段による比較結果に応じて、転送レートを調整する調整手段とを備えることを特徴とする。
【００３６】
前記パケット化手段には、１フレーム分のデータをパケット化させるようにすることができる。
【００３７】
前記所定の２つのパケットは、パケット化手段によりパケット化されたデータの先頭２つのパケットであるものとすることができる。
【００３８】
前記比較手段により、報告パケットに埋め込まれている算出結果が、算出手段により算出されたネットワークのボトルネックリンクの帯域より大きいと判断された場合、調整手段には、算出手段により算出されたネットワークのボトルネックリンクの帯域に基づいて、転送レートを調整させるようにすることができる。
【００３９】
前記比較手段により、報告パケットに埋め込まれている算出結果が、算出手段により算出されたネットワークのボトルネックリンクの帯域より小さいと判断された場合、調整手段には、報告パケットに埋め込まれているネットワークのボトルネックリンクの帯域に基づいて、転送レートを調整させるようにすることができる。
【００４０】
本発明の第２の送信方法は、データをパケット化するパケット化ステップと、パケット化ステップの処理によりパケット化されたデータのち、所定の２つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張ステップと、受信装置に対し、拡張ステップの処理により拡張された最大サイズの２つのパケットを含む、パケット化ステップの処理によりパケット化されたデータを送信する送信ステップと、受信装置から送信されてきた２つの報告パケットを受信する受信ステップと、受信ステップの処理により受信された２つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとを含むことを特徴とする。
【００４１】
本発明の第３の記録媒体に記録されているプログラムは、データをパケット化するパケット化ステップと、パケット化ステップの処理によりパケット化されたデータのち、所定の２つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張ステップと、受信装置に対し、拡張ステップの処理により拡張された最大サイズの２つのパケットを含む、パケット化ステップの処理によりパケット化されたデータを送信する送信ステップと、受信装置から送信されてきた２つの報告パケットを受信する受信ステップと、受信ステップの処理により受信された２つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとをコンピュータに行わせることを特徴とする。
【００４２】
本発明の第３のプログラムは、データをパケット化するパケット化ステップと、パケット化ステップの処理によりパケット化されたデータのち、所定の２つのパケットの拡張領域にオリジナルデータのサイズを書き込むとともに、オリジナルデータ以外にパディングデータを書き込んで最大サイズに拡張する拡張ステップと、受信装置に対し、拡張ステップの処理により拡張された最大サイズの２つのパケットを含む、パケット化ステップの処理によりパケット化されたデータを送信する送信ステップと、受信装置から送信されてきた２つの報告パケットを受信する受信ステップと、受信ステップの処理により受信された２つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果を比較する比較ステップと、比較ステップの処理による比較結果に応じて、転送レートを調整する調整ステップとをコンピュータに行わせることを特徴とする。
【００４３】
本発明の第２の受信装置は、送信装置から送信されてきたデータを受信する受信手段と、受信手段により受信されたデータに拡張領域が含まれているか否かを判定する判定手段と、判定手段によりデータに拡張領域が含まれていると判定された場合、拡張領域を含む２つのデータの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出手段と、算出手段による算出結果を埋め込んだ報告パケットを作成する作成手段と、送信装置に対し、作成手段により作成された報告パケットを続けて２つ送信する送信手段とを備えることを特徴とする。
【００４４】
前記受信手段には、１フレーム分のデータを受信させるようにすることができる。
【００４５】
本発明の第２の受信方法は、送信装置から送信されてきたデータを受信する受信ステップと、受信ステップの処理により受信されたデータに拡張領域が含まれているか否かを判定する判定ステップと、判定ステップの処理によりデータに拡張領域が含まれていると判定された場合、拡張領域を含む２つのデータの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、送信装置に対し、作成ステップの処理により作成された報告パケットを続けて２つ送信する送信ステップとを含むことを特徴とする。
【００４６】
本発明の第４の記録媒体に記録されているプログラムは、送信装置から送信されてきたデータを受信する受信ステップと、受信ステップの処理により受信されたデータに拡張領域が含まれているか否かを判定する判定ステップと、判定ステップの処理によりデータに拡張領域が含まれていると判定された場合、拡張領域を含む２つのデータの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、送信装置に対し、作成ステップの処理により作成された報告パケットを続けて２つ送信する送信ステップとをコンピュータに行わせることを特徴とする。
【００４７】
本発明の第４のプログラムは、送信装置から送信されてきたデータを受信する受信ステップと、受信ステップの処理により受信されたデータに拡張領域が含まれているか否かを判定する判定ステップと、判定ステップの処理によりデータに拡張領域が含まれていると判定された場合、拡張領域を含む２つのデータの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域を算出する算出ステップと、算出ステップの処理による算出結果を埋め込んだ報告パケットを作成する作成ステップと、送信装置に対し、作成ステップの処理により作成された報告パケットを続けて２つ送信する送信ステップとをコンピュータに行わせることを特徴とする。
【００４８】
第１の本発明においては、送信装置から受信装置に対し、パケット化された冗長データが続けて２つ送信され、受信装置で、２つのパケット化された冗長データの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、算出結果を埋め込んだ報告パケットが送信装置に２つ送信され、送信装置で、２つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、その算出結果と、報告パケットに埋め込まれている算出結果との比較結果に応じて、転送レートが調整される。
【００４９】
第２の本発明においては、受信装置に対し、パケット化された冗長データが続けて２つ送信され、受信装置から送信されてきた２つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、その算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果との比較結果に応じて、転送レートが調整される。
【００５０】
第３の本発明においては、送信装置から送信されてきた２つの冗長データの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、その算出結果を埋め込んだ報告パケットが作成され、送信装置に対し、作成された報告パケットが続けて２つ送信される。
【００５１】
第４の本発明においては、送信装置から受信装置に対し、拡張された最大サイズの２つのパケットが送信され、受信装置で、２つの最大サイズのパケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、算出結果を埋め込んだ報告パケットが送信装置に２つ送信され、送信装置で、２つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、その算出結果と、報告パケットに埋め込まれている算出結果との比較結果に応じて、転送レートが調整される。
【００５２】
第５の本発明においては、受信装置に対し、拡張された最大サイズの２つのパケットが２つ送信され、受信装置から送信されてきた２つの報告パケットの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、その算出結果と、報告パケットに埋め込まれている、受信装置により算出されたネットワークのボトルネックリンクの帯域の算出結果との比較結果に応じて、転送レートが調整される。
【００５３】
第６の本発明においては、送信装置から送信されてきた拡張領域を含む２つのデータの受信時刻に基づいて、ネットワークのボトルネックリンクの帯域が算出され、その算出結果を埋め込んだ報告パケットが作成され、送信装置に対し、作成された報告パケットが続けて２つ送信される。
【００５４】
【発明の実施の形態】
以下、図を参照して、本発明の実施の形態について説明する。
【００５５】
図２は、本発明を適用したストリーミング配信システムの構成例を示す図である。このストリーミング配信システムにおいては、インターネットなどのパケット通信網３に、サーバ２およびクライアント４が接続されている。
【００５６】
サーバ２は、コンピュータであって、カメラ１から取得した画像データを、例えば、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）などの所定の圧縮形式で圧縮する。クライアント４からストリーミング配信が要求された場合、サーバ２は、圧縮データから、ＲＴＰ規格に準拠するようなＲＴＰパケットを生成し、パケット通信網３を介して、クライアント４へストリーミングを行う。
【００５７】
クライアント４は、例えば、デジタル携帯電話機、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、あるいはパーソナルコンピュータなどにより構成され、パケット通信網３を介してサーバ２にアクセスし、ストリーミングデータの配信を要求し、その要求に基づいて配信されてくるストリーミングデータを受信する。クライアントは、受信したストリーミングデータをデコードして再生し、ユーザに視聴させる。
【００５８】
図１に示したストリーミング配信システムの例では、クライアント４を１つしか図示していないが、勿論、多数のクライアントが接続されることは言うまでもない。
【００５９】
図３は、サーバ２の構成例を示すブロック図である。
【００６０】
エンコーダ１１は、カメラ１から取得した画像データを１フレーム分キャプチャし、転送レート制御部１２でエンコードパラメータとして保持されているデータに基づいて、エンコードする。エンコードされたデータは、バッファ１５に供給され、そこに一時的に記憶される。
【００６１】
転送レート制御部１２は、フレームレートを保持しているとともに、ｂｐｐ（ｂｉｔ−ｐｅｒ−ｐｉｘｅｌ）、すなわち画質のパラメータ（エンコードパラメータ）の値を保持している。転送レート制御部１２は、通信部１８を介してクライアント４からデータを受信すると、パケットのシーケンス番号に応じて、時刻保持部１３に受信時刻を保持させたり、あるいは、ボトルネックリンクの帯域を算出する。また転送レート制御部１２は、受信データに含まれるクライアント４において算出されたボトルネックリンクの推定帯域に応じて、転送レートの調整を行う。
【００６２】
ＲＴＰパケット作成部１６は、バッファ１５からデータを読み込み、そのデータからＲＴＰパケットを作成し、通信部１８に供給する。ＦＥＣ（Ｆｏｒｗａｒｄ  Ｅｒｒｏｒ  Ｃｏｌｌｅｃｔｉｏｎ）パケット作成部１７は、ＲＴＰパケット作成部１６で作成されたＲＴＰパケットを参照し、そのＲＴＰパケットに基づいてＦＥＣパケット（冗長データ）を作成し、通信部１８に供給する。
【００６３】
通信部１８は、タイマを有しており、ＲＴＰパケット作成部１６から供給されたＲＴＰパケット、またはＦＥＣパケット作成部１７から供給されたＦＥＣパケットを、所定のパケット間隔で、パケット通信網３を介してクライアント４に転送する。また通信部１８は、ＦＥＣパケット作成部１７から、１つ目のＦＥＣパケットが供給された場合、送信時刻を時刻保持部１９に保持させ、２つ目のＦＥＣパケットが供給された場合、時刻保持部１９で保持されている送信時刻と、現在の時刻に基づいて、最大転送レートを算出し、その値を最大転送レート保持部１４に保持させる。さらに通信部１８は、パケット通信網３を介してクライアント４からデータを受信し、その受信データに含まれる、現在のボトルネックリンクの推定帯域の値を転送レート制御部１２に供給する。
【００６４】
制御部２０は、記憶部２１に記憶されている制御プログラム、あるいは図示せぬＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）に記憶されている制御プログラムに基づいて、サーバ２の全体の動作を制御する。記憶部２１は、ハードディスクドライブなどで構成され、制御部２０が実行する制御プログラムの他、各種処理を行う上で必要なデータなどを記憶する。
【００６５】
また制御部２０には、必要に応じてドライブ２２が接続され、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどのリムーバブルメディア２３が適宜装着され、それらから読み出された制御プログラムが、必要に応じて記憶部２１にインストールされる。
【００６６】
図４は、図３に示したＲＴＰパケット作成部１６の詳細な構成例を示す図である。同図に示されるように、ＲＴＰパケット作成部１６は、パケタイザ３１、データ部保持部３２、ヘッダ部保持部３３、およびエントリ保持部３４で構成されている。
【００６７】
パケタイザ３１は、バッファ１５から圧縮されたデータを取得し、それをデータ部保持部３２に保持させるとともに、取得したデータから、ＲＴＰヘッダを作成し、それをヘッダ部保持部３３に保持させる。またパケタイザ３１は、データ部保持部３２に保持させたデータ、およびヘッダ部保持部３３に保持させたＲＴＰヘッダに基づいて、エントリ保持部３４のデータを更新する。
【００６８】
エントリ保持部３４は、例えば、図５に示されるように、ヘッダ部保持部３３で保持されているＲＴＰヘッダのシーケンス番号に対応付けて、データ部保持部３２で保持されているデータのサイズ、および、データが保持されているデータ部保持部３２のアドレスを保持する。
【００６９】
図５の例の場合、シーケンス番号１に対応付けて、“２５６”のデータサイズおよび“０ｘ００ａｂ”のアドレスが保持され、シーケンス番号２に対応付けて、“５１２”のデータサイズおよび“０ｘ００ａｃ”のアドレスが保持され、シーケンス番号３に対応付けて、“１０２４”のデータサイズおよび“０ｘ００ａｄ”のアドレスが保持され、シーケンス番号４に対応付けて、“２５６”のデータサイズおよび“０ｘ００ａｆ”のアドレスが保持されている。
【００７０】
図６は、クライアント４の構成例を示すブロック図である。
【００７１】
通信部４１は、パケット通信網３を介してサーバ２から転送されてきたデータを受信する。受信されたデータは、バッファ４２に供給され、そこに一時的に記憶される。また通信部４１は、サーバ２からＦＥＣデータ（冗長データ）を受信した場合、それを帯域算出部４５に供給し、受信時刻を測定させるとともに、ボトルネックリンクの帯域を算出させる。通信部４１は、パケット作成部４７で作成された、ボトルネックリンク帯域の算出結果が埋め込まれたパケットを取得し、それをサーバ２に転送する。
【００７２】
デコーダ４３は、バッファ４２からデータを読み込み、それをデコードした後、表示部４４に出力する。表示部４４は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）やＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）などのディスプレイで構成され、デコーダ４３から供給されるデータに対応する動画像などを表示する。
【００７３】
帯域算出部４５は、通信部４１から供給された受信データから、受信時刻を測定し、その測定結果を時刻保持部４６に保持させるとともに、ボトルネックリンクの帯域を算出し、その算出結果をパケット作成部４７に供給する。
【００７４】
パケット作成部４７は、帯域算出部４５から供給されたデータ（ボトルネックリンク帯域の算出結果）をパケット化し、報告パケットとして通信部４１に供給する。
【００７５】
制御部４８は、記憶部４９に記憶されている制御プログラム、あるいは図示せぬＲＯＭに記憶されている制御プログラムに基づいて、クライアント４の全体の動作を制御する。記憶部４９は、ハードディスクドライブなどで構成され、制御部４８が実行する制御プログラムの他、各種処理を行う上で必要なデータなどを記憶する。
【００７６】
また制御部４８には、必要に応じてドライブ５０が接続され、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどのリムーバブルメディア５１が適宜装着され、それらから読み出された制御プログラムが、必要に応じて記憶部４９にインストールされる。
【００７７】
図７は、本発明に係るＲＴＰパケットのヘッダ部のフォーマットを説明するための図である。
【００７８】
同図に示されるように、ＲＴＰパケットのヘッダ部は、固定長の２ビットのＶｅｒｓｉｏｎ（ｖ）、１ビットのＰａｄｄｉｎｇ（ｐ）、１ビットのＥｘｔｎｓｉｏｎ（ｘ）、３ビットのＣＳＲＣ  Ｃｏｕｎｔ（ｃｃ）、２ビットのＭａｒｋｅｒ（ｍ）、７ビットのＰａｙｌｏａｄ  Ｔｙｐｅ（Ｐｔ）、１６ビットのＳｅｑｕｅｎｃｅ、３２ビットのＴｉｍｅｓｔａｍｐ、３２ビットのＳＳＲＣ／ＣＳＲＣ（Ｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  Ｓｏｕｒｃｅ／Ｃｏｎｔｒｉｂｕｔｉｎｇ  Ｓｏｕｒｃｅｓ）、３２ビットのＯｒｉｇｉｎａｌ  Ｄａｔａから構成されている。
【００７９】
Ｖｅｒｓｉｏｎは、ＲＴＰパケットのバージョンを表わし、Ｐａｄｄｉｎｇは、ＲＴＰパケットの最後の部分にパディング（意味を持たないデータであり、パケットの長さ合わせのために付加されるもの）が付加されているか否かを表わし、Ｅｘｔｅｎｓｉｏｎは、拡張ビットを表わし、ＣＳＲＣ  Ｃｏｕｎｔは、貢献ソース識別子を表わし、Ｍａｒｋｅｒは、ＲＴＰパケットのマーカを表わし、Ｐａｙｌｏａｄ  Ｔｙｐｅは、ＲＴＰパケットのペイロードタイプを表わし、Ｓｅｑｕｅｎｃｅは、ＲＴＰパケットのシーケンス番号を表わし、Ｔｉｍｅｓｔａｍｐは、ＲＴＰパケットのタイムスタンプを表わし、ＳＳＲＣ／ＣＳＲＣは、同期ソース識別子あるいは貢献ソース識別子を表わし、Ｏｒｉｇｉｎａｌ  Ｄａｔａは、ＲＴＰパケットのヘッダ部のオリジナルデータのデータ格納領域を表わしている。
【００８０】
図８は、本発明に係るＦＥＣデータのヘッダ部のフォーマットを説明するための図である。図８のＦＥＣパケットのヘッダ部のフォーマットは、基本的に、図７におけるＲＴＰパケットのヘッダ部のフォーマットと同様の構成とされている。
【００８１】
すなわち、図７のＲＴＰパケットのヘッダ部のペイロードタイプには、ＲＴＰパケットを表わす“３３”が記されており、図８のＦＥＣパケットのヘッダ部のペイロードタイプには、ＦＥＣパケットを表わす“１００”が記されており、それ以外は、同様の構成とされる。
【００８２】
次に、図９のフローチャートを参照して、サーバ２が実行するデータ転送処理について説明する。
【００８３】
ステップＳ１において、サーバ２の制御部２０の制御の下、ＲＴＰパケット作成部１６は、ＲＴＰパケットのタイムスタンプ、およびシーケンス番号の初期化を行い、転送レート制御部１２は、エンコードパラメータ、およびフレームレートの初期化を行い、通信部１８は、タイマの初期化を行う。ステップＳ２において、通信部１８は、制御部２０の制御の下、タイマが終了したか否かを判定し、タイマが終了するまで待機する。
【００８４】
ステップＳ２において、タイマが終了したと判定された場合、ステップＳ３に進み、エンコーダ１１は、制御部２０の制御の下、カメラ１から供給されるデータを１フレーム分キャプチャする。ステップＳ４において、エンコーダ１１は、転送レート制御部１２で保持されているエンコードパラメータ（画質パラメータ：ｂｂｐ）を参照して、キャプチャしたデータをエンコードし、ステップＳ５において、エンコードしたデータをバッファ１５へ転送する。
【００８５】
ステップＳ６において、ＲＴＰパケット作成部１６は、制御部２０の制御の下、バッファ１５に一時的に記憶されているデータを取り込み、ＲＴＰパケットを作成するとともに、作成されたＲＴＰパケットを通信部１８に送信する。
【００８６】
ここで、図１０のフローチャートを参照して、ＲＴＰパケット作成部１６が実行する、ＲＴＰパケット作成処理および送信処理の詳細について説明する。
【００８７】
ステップＳ２１において、ＲＴＰパケット作成部１６のパケタイザ３１は、データ部保持部３２、ヘッダ部保持部３３、およびエントリ保持部３４の初期化を行う。ステップＳ２２において、パケタイザ３１は、バッファ１５を参照し、そこにデータがあるか否かを判定し、バッファ１５にデータがあると判定した場合、ステップＳ２３に進む。
【００８８】
ステップＳ２３において、パケタイザ３１は、バッファ１５から圧縮されたデータを取得し、ステップＳ２４において、取得したデータをデータ部保持部３２に保持させる。
【００８９】
なお、パケタイザ３１は、バッファ１５からデータを取得する際、所定のデータ単位、もしくは、予め決められた所定のデータ量でデータを読み込むようにする。ここで、所定のデータ単位とは、例えば、ＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）２０００の場合、ＪＰ２パケット（すなわち、符号化の最小のエンコードユニット）とされる。
【００９０】
ステップＳ２５において、パケタイザ３１は、ステップＳ２３の処理で取得したデータから、図７で示したフォーマットに従って、ＲＴＰヘッダを作成し、それをヘッダ部保持部３３に保持させる。ステップＳ２６において、パケタイザ３１は、エントリ保持部３４に、ステップＳ２５の処理で作成されたＲＴＰヘッダのシーケンス番号、ステップＳ２３の処理でバッファ１５から取得したデータのサイズ、および、データ部保持部３２におけるデータのアドレスを保持させる（図５）。その詳細は、ステップＳ２９（図１１）を用いて後述するが、これらの情報は、送信時、ＲＴＰヘッダ部とデータ部を結合する際に必要となる。
【００９１】
ステップＳ２７において、パケタイザ３１は、ＲＴＰヘッダのシーケンス番号を更新する。ステップＳ２８において、パケタイザ３１は、データ部保持部３２で保持されているデータの余っているデータ領域へ１を埋め込み、パディングする。なお、１だけでなく、０でパディングすることも勿論可能である。
【００９２】
以上のような処理が、バッファ１５に記憶されている全てのデータ（１フレーム分のデータ）に対して行われる。そして、ステップＳ２２において、バッファ１５にデータがないと判定された場合、すなわち、バッファ１５に記憶されている１フレーム分のデータのＲＴＰパケットが作成されたと判定された場合、ステップＳ２９に進み、パケタイザ３１は、ヘッダ部とデータ部の結合処理を行う。このとき、パケタイザ３１は、データを結合する長さに関して、エントリ保持部３４で保持されているデータのサイズ（図５）を参照する。
【００９３】
ここで、図１１のフローチャートを参照して、パケタイザ３１が実行する、ヘッダ部とデータ部の結合処理の詳細について説明する。
【００９４】
ステップＳ４１において、パケタイザ３１は、自己の初期化を行う。ステップＳ４２において、パケタイザ３１は、エントリ保持部３４（図５）を参照し、エントリがあるか否かを判定し、エントリがあると判定した場合、ステップＳ４３に進み、エントリのシーケンス番号のアドレス部分（すなわち、データが保持されているデータ部保持部３２のアドレス）から、エントリにあるサイズ分だけデータを取得する。
【００９５】
ステップＳ４４において、パケタイザ３１は、現在参照しているエントリのシーケンス番号のＲＴＰヘッダを、ヘッダ部保持部３３から取得する。ステップＳ４５において、パケタイザ３１は、ステップＳ４３の処理で取得したデータと、ステップＳ４４の処理で取得したＲＴＰヘッダを結合する。
【００９６】
すなわち、例えば、図１２に示されるように、シーケンス番号１のＲＴＰヘッダ部Ａ１が、データ部Ｂ１と結合され、シーケンス番号２のＲＴＰヘッダ部Ａ２がデータ部Ｂ２と結合され、シーケンス番号３のＲＴＰヘッダ部Ａ３がデータ部Ｂ３と結合され、シーケンス番号４のＲＴＰヘッダ部Ａ４がデータ部Ｂ４と結合される。
【００９７】
なお、ＲＴＰヘッダ部と結合されるデータ部は、データによってサイズが異なるため、必要に応じて、１でパディング（Ｐａｄｄｉｎｇ）される。このパディング（Ｐａｄｄｉｎｇ）は、意味を持たないデータであり、パケットの長さ合わせのために付加される。図１２の例の場合、データ部Ｂ１，Ｂ２およびＢ４が、１でパディングされている。
【００９８】
そして、ステップ４６において、パケタイザ３１は、次のエントリへ処理対象を移行した後、ステップＳ４２に戻り、上述した処理を繰り返し実行する。
【００９９】
ステップＳ４２において、エントリ保持部３４に処理対象となるエントリがなくなったと判定された場合（すなわち、エントリにある全てのデータがＲＴＰにパケット化されたと判定された場合）、処理は、図１０のステップＳ３０にリターンする。
【０１００】
以上のようにして作成された各ＲＴＰヘッダは、同じ時刻に作成されるデータであるため、そのタイムスタンプは同一とされ、シーケンス番号のみが異なる。
【０１０１】
図１０の説明に戻る。ステップＳ３０において、パケタイザ３１は、ステップＳ２９（図１１）の処理により、ＲＴＰヘッダ部とデータ部が結合されたデータ（すなわち、オリジナルデータをＲＴＰにパケット化したもの）を通信部１８へ送信する。そして、処理は、図９のステップＳ７にリターンする。
【０１０２】
なお、その詳細は、図１４のフローチャートを参照して後述するが、通信部１８は、ＲＴＰパケット作成部１６のパケタイザ３１から送信されてきたＲＴＰパケットを、タイマの動作に従って、所定のパケット間隔で、パケット通信網３を介してクライアント４へストリーミングする。
【０１０３】
ステップＳ７において、ＦＥＣパケット作成部１７は、制御部２０の制御の下、ステップＳ８の処理により、ＲＴＰパケット作成部１６で作成されたＲＴＰパケットに基づいて、ＦＥＣパケットを作成するとともに、作成されたＦＥＣパケットを通信部１８に送信する。
【０１０４】
ここで、図１３のフローチャートを参照して、ＦＥＣパケット作成部１７が実行する、ＦＥＣパケット作成処理および送信処理の詳細について説明する。
【０１０５】
ステップＳ６１において、ＦＥＣパケット作成部１７は、ＲＴＰパケット作成部１６のエントリ保持部３４を参照し、エントリのシーケンス番号の小さいもの２つのデータ（図５の例の場合、シーケンス番号１，２に対応するデータ）を選択し、それらのデータからＦＥＣ１データを作成する。ここでは、ＦＥＣデータの作成法に関して、特に限定はしないが、例えば、Ｅｘｃｌｕｓｉｖｅ−ＯＲ（イクスクルーシブオア）回路を用い、２つのデータの排他的論理和を演算した結果（両入力が「１」のとき、「０」を出力する）をＦＥＣのデータとする。
【０１０６】
ステップＳ６２において、ＦＥＣパケット作成部１７は、ステップＳ６１の処理で作成されたＦＥＣ１データから、図８で示したフォーマットに従って、ヘッダを作成する。すなわち、ＲＴＰヘッダのペイロードタイプのみが異なるフォーマットに従って、ヘッダが作成される。
【０１０７】
ステップＳ６３において、ＦＥＣパケット作成部１７は、ＲＴＰパケット作成部１６のエントリ保持部３４を参照し、エントリ情報のシーケンス番号の大きいもの２つのデータ（図５の例の場合、シーケンス番号３，４に対応するデータ）を選択し、それらのデータからＦＥＣ２データを作成する。ステップＳ６４において、ＦＥＣパケット作成部１７は、ステップＳ６３の処理で作成されたＦＥＣ２データから、図８で示したフォーマットに従って、ヘッダを作成する。
【０１０８】
ステップＳ６５において、ＦＥＣパケット作成部１７は、ステップＳ６２の処理で作成されたＦＥＣ１データのヘッダ（すなわち、ＦＥＣ１データをパケット化したもの）を通信部１８へ送信し、続けて、ステップＳ６６において、ステップＳ６４の処理で作成されたＦＥＣ２データのヘッダ（すなわち、ＦＥＣ２データをパケット化したもの）を通信部１８へ送信する。そして、処理は、図９のステップＳ８にリターンする。
【０１０９】
ステップＳ８において、通信部１８は、ステップＳ６の処理（図１０）で作成されたＲＴＰパケット、およびステップＳ７の処理（図１３）で作成されたＦＥＣパケットのストリーミングを行う。
【０１１０】
ここで、図１４のフローチャートを参照して、通信部１８が実行する、ストリーミング処理の詳細について説明する。
【０１１１】
ステップＳ８１において、通信部１８は、自己の初期化を行う。ステップＳ８２において、通信部１８は、送信データがあるか否か、すなわち、ＲＴＰパケット作成部１６またはＦＥＣパケット作成部１７からデータが送信されてきたか否かを判定し、送信データがあると判定した場合、ステップＳ８３に進む。
【０１１２】
ステップＳ８３において、通信部１８は、送信データがＦＥＣパケットであるか否か、すなわち、送信データのペイロードタイプに“１００”が記されているか否かを判定する。ステップＳ８３において、送信データがＦＥＣパケットであると判定された場合、ステップＳ８４に進み、通信部１８は、タイマを０に設定する。
【０１１３】
ステップＳ８３において、送信データがＦＥＣパケットではないと判定された場合、すなわち、送信データのペイロードタイプに“３３”が記されており、送信データがＲＴＰパケットであると判定された場合、ステップＳ８５に進み、通信部１８は、ＲＴＰパケット作成部１６のエントリ保持部３４で保持されているエントリ数と、転送レート制御部１２で保持されているフレームレートに基づいて、タイマを設定する。ここで設定するタイマの値としては、例えば、次式（２）により決定される。
タイマの値＝（１／フレームレート）／エントリ数（単位：秒）・・・（２）
【０１１４】
ステップＳ８６において、通信部１８は、タイマが終了したか否かを判定し、タイマが終了するまで待機する。そして、ステップＳ８６において、タイマが終了したと判定された場合、ステップＳ８７に進み、通信部１８は、データ（ＲＴＰパケットまたはＦＥＣパケット）を送信する。
【０１１５】
ステップＳ８８において、通信部１８は、送信データが１つ目のＦＥＣパケットであるか否かを判定し、１つ目のＦＥＣパケットであると判定した場合、ステップＳ８９に進み、時刻保持部１９に送信時刻を保持させる。
【０１１６】
ステップＳ８８において、送信データが１つ目のＦＥＣパケットではないと判定された場合、ステップＳ９０に進み、通信部１８は、送信データが２つ目のＦＥＣパケットであるか否かを判定する。そして、ステップＳ９０において、送信データが２つ目のＦＥＣパケットであると判定された場合、ステップＳ９１に進み、通信部１８は、ステップＳ８９の処理で時刻保持部１９に保持させた送信時刻と現在の時刻に基づいて、次式（３）に従って、最大転送レートを算出する。
最大転送レート＝ＦＥＣパケットのサイズ／（現在時刻−送信時刻）・・・（３）
【０１１７】
通信部１８は、算出した最大転送レートを、最大転送レート保持部１４に保持させる。そして、ステップＳ８９またはＳ９１の処理の後、ステップＳ８２に戻り、上述した処理が繰り返し実行される。
【０１１８】
ステップＳ９０において、送信データが２つ目のＦＥＣパケットではないと判定された場合、すなわち、送信データがＲＴＰパケットであると判定された場合、ステップＳ８９，９１の処理は行われず、ステップＳ８２に戻り、上述した処理が繰り返し実行される。
【０１１９】
ステップＳ８２において、処理対象となる送信データがなくなったと判定された場合（すなわち、１フレーム分のＲＴＰパケット、および２つのＦＥＣパケットが送信さたと判定された場合）、処理は、図９のステップＳ９にリターンする。
【０１２０】
以上においては、ＲＴＰパケットの送信において、上記式（２）により算出されたタイマの値を用いるようにしたが、ＦＥＣパケット送信における場合と同様に、タイマを０に設定するようにしてもよい。
【０１２１】
図９の説明に戻る。ステップＳ９において、ＲＴＰパケット作成部１６は、制御部２０の制御の下、ＲＴＰパケットのタイムスタンプを更新する。ステップＳ１０において、通信部１８は、制御部２０の制御の下、転送レート制御部１２で保持されているフレームレート（ｆｐｓ）を参照し、対応するフレームレートになるようにタイマをセットする。その後、ステップＳ２に戻り、上述した処理が繰り返し実行される。
【０１２２】
以上のように、サーバ２は、オリジナルデータからＲＴＰパケットを作成し、それをクライアント４に送信した後、サイズの等しい２つのＦＥＣパケット（冗長データ）をパケットペアで送信することができる。
【０１２３】
また、サーバ２は、ＲＴＰパケットの送信後にＦＥＣパケットを送信するだけでなく、例えば、ＲＴＰパケットの送信前にＦＥＣパケットを送信したり、あるいは、所定数のＲＴＰパケットを送信した後に（ＲＴＰパケットの送信途中に）ＦＥＣパケットを送信するようにしてもよい。
【０１２４】
次に、図１５のフローチャートを参照して、サーバの転送処理（図９）により送信されてきたデータを受信し、ボトルネックリンクの帯域を推定し、推定帯域を報告するパケットを作成するまでのクライアント４の処理について説明する。
【０１２５】
ステップＳ１０１において、クライアント４の制御部４８は、時刻保持部４６のデータの初期化を行うとともに、バッファ４２の初期化を行う。ステップＳ１０２において、通信部４１は、制御部４８の制御の下、パケット通信網３を介してサーバ２よりデータを受信したか否かを判定し、データを受信するまで待機する。
【０１２６】
ステップＳ１０２において、データを受信したと判定された場合、ステップＳ１０３に進み、通信部４１は、受信データがＦＥＣパケットであるか否か、すなわち、受信データのペイロードタイプに“１００”が記されているか否かを判定し、受信データがＦＥＣパケットであると判定した場合、ステップＳ１０４に進む。
【０１２７】
ステップＳ１０４において、通信部４１は、受信したＦＥＣパケットのヘッダ部のタイムスタンプを参照し、新しいタイムスタンプであるか否か、すなわち、新しく受信したＦＥＣパケットであるか否かを判定し、新しいタイムスタンプであると判定した場合、ステップＳ１０５に進み、時刻保持部４６に、新しく受信したＦＥＣパケットの受信時刻を保持させる。
【０１２８】
ステップＳ１０４において、新しいタイムスタンプではない、すなわち、過去に受信したＦＥＣパケットのタイムスタンプであると判定された場合、ステップＳ１０６に進み、通信部４１は、受信したＦＥＣパケットにパケットロスが発生していないか否かを判定し、パケットロスが発生していないと判定した場合、ステップＳ１０７に進む。なお、パケットロスが発生しているか否かの判定は、ヘッダ部のシーケンス番号を参照することで検知することができる。
【０１２９】
ステップＳ１０７において、通信部４１は、受信したＦＥＣパケットを帯域算出部４５に供給し、ボトルネックリンクの帯域を算出させる。帯域算出部４５は、供給されたＦＥＣパケットから、次式（４）に従って、ボトルネックリンクの帯域Ｂを算出し、算出結果をパケット作成部４７に供給する。
2004266741.tif 000003
【０１３０】
ステップＳ１０８において、パケット作成部４７は、ステップＳ１０７の処理で算出された帯域Ｂの値をサーバ２に報告するためのパケットを作成する。ここで作成される報告パケットのフォーマットを図１６に示す。
【０１３１】
同図に示されるように、作成されるパケットは、固定長の２ビットのＶｅｒｓｉｏｎ（ｖ）、１ビットのＰａｄｄｉｎｇ（ｐ）、５ビットのＳｕｂ  Ｔｙｐｅ（Ｓｕｂ）、８ビットのＰａｃｋｅｔ  Ｔｙｐｅ（ＰＴ）、１６ビットのＭｅｓｓａｇｅ  Ｌｅｎｇｔｈ、３２ビットのＳＳＲＣ／ＣＳＲＣ、３２ビットのＮＡＭＥ、および３２ビットのＤａｔａ部から構成されている。
【０１３２】
Ｖｅｒｓｉｏｎは、パケットのバージョンを表わし、Ｐａｄｄｉｎｇは、パケットの最後の部分にパディングが付加されているか否かを表わし、Ｓｕｂ  Ｔｙｐｅは、パケットのサブタイプ（種類）を表わし、Ｐａｃｋｅｔ  Ｔｙｐｅは、パケットタイプ（ＡＰＰ＝２０６）を表わし、Ｍｅｓｓａｇｅ  Ｌｅｎｇｔｈは、パケットの長さを表わし、ＳＳＲＣ／ＣＳＲＣは、サーバ識別子あるいはサーバ２に関連する識別子を表わし、ＮＡＭＥは、パケットの名前を表わし、Ｄａｔａ部は、アプリケーション依存のデータ領域を表わしている。
【０１３３】
パケット作成部４７は、Ｄａｔａ部に、算出されたボトルネックリンクの帯域Ｂの値を埋め込むとともに、Ｓｅｑ部分に、パケットのシーケンス番号を書き込む。なお、パケットのシーケンス番号は、１から始まり、１パケット送信する毎に１だけインクリメントされる。
【０１３４】
ステップＳ１０９において、通信部４１は、ステップＳ１０８の処理で作成された帯域Ｂの値が埋め込まれた報告パケット１をサーバ２へ送信し、ステップＳ１１０において、パケット送信の間隔を空けずに、同じ内容の報告パケット２をサーバ２へ送信する。すなわち、Ｄａｔａ部が同じ２つの報告パケットがバックツーバックでサーバ２へ送信される。
【０１３５】
ステップＳ１０６において、受信したＦＥＣパケットにパケットロスが発生していると判定された場合、ＦＥＣパケットペアの１つ目のパケットにパケットロスが発生しているか、あるいは、ＦＥＣパケットがリオーダしたと判断される。この場合、帯域の算出処理および報告パケットの作成処理は行われず、ステップＳ１０２に戻り、上述した処理が繰り返し実行される。
【０１３６】
ステップＳ１０３において、受信データがＦＥＣパケットではないと判定された場合、すなわち、受信データがＲＴＰパケットであると判定された場合、ステップＳ１１１に進み、通信部４１は、受信データをバッファ４２に供給した後、ステップＳ１０２に戻り、上述した処理を繰り返し実行する。
【０１３７】
このように、２つのＦＥＣパケット（すなわち、冗長データ）を受信することにより、ボトルネックリンクの帯域を算出（推測）し、算出結果を報告パケットに埋め込んでサーバ２に報告することができる。
【０１３８】
次に、図１７のフローチャートを参照して、クライアント４の処理（図１５）により送信されてきた報告パケットを受信し、ボトルネックリンクの帯域を算出し、転送レートを調整するまでのサーバ２の転送レート制御部１２の処理について説明する。
【０１３９】
ステップＳ１２１において、転送レート制御部１２は、自己の初期化を行う。ステップＳ１２２において、転送レート制御部１２は、制御部２０の制御の下、通信部１８を介してクライアント４から報告パケットを受信したか否かを判定し、報告パケットを受信するまで待機する。
【０１４０】
ステップＳ１２２において、報告パケットを受信したと判定された場合、ステップＳ１２３に進み、転送レート制御部１２は、受信した報告パケットのシーケンス番号が奇数であるか否かを判定する。
【０１４１】
ステップＳ１２３において、報告パケットのシーケンス番号が奇数であると判定された場合、転送レート制御部１２は、パケットペアの１つ目のパケットであると判断し、ステップＳ１２４に進み、時刻保持部１３に、受信時刻を保持させる。一方、ステップＳ１２３において、報告パケットのシーケンス番号が偶数であると判定された場合、転送レート制御部１２は、パケットペアの２つ目のパケットであると判断し、ステップＳ１２５に進む。
【０１４２】
ステップＳ１２５において、転送レート制御部１２は、受信した報告パケットにパケットロスが発生していないか否かを判定し、パケットロスが発生していないと判定した場合、ステップＳ１２６に進み、上記式（４）に従って、ボトルネックリンクの帯域Ｂを算出する。これにより、クライアント４からサーバ２の間のボトルネックリンクの帯域を測定することができる。転送レート制御部１２は、以上のようにして算出したボトルネックリンクの帯域の値を保持する。
【０１４３】
ステップＳ１２５において、報告パケットにパケットロスが発生していると判定された場合、帯域の算出処理は行われず、ステップＳ１２７に進む。
【０１４４】
ステップＳ１２７において、転送レート制御部１２は、クライアント４から受信した報告パケットのＤａｔａ部に埋め込まれている帯域が、最大転送レート保持部１４で保持されている最大転送レートより小さいか否かを判定し、クライアント４から報告された帯域が最大転送レートより小さいと判定した場合、ステップＳ１２８に進む。
【０１４５】
ステップＳ１２８において、転送レート制御部１２は、クライアント４から報告された帯域の値を用いて、統計処理を行う。ここで行われる統計処理は、例えば、クライアント４から受け取った過去１０個の帯域の値の平均値をボトルネックリンクの帯域にするようにしてもよいし、あるいは、次式（５）に従って、ボトルネックリンクの帯域Ｂを算出するようにしてもよい。ここでαは、例えば、０．１などの係数とされる。
2004266741.tif 000004
【０１４６】
さらに、受け取った帯域の値の平均をとる方法ではなく、例えば、受け取った帯域の値そのものを、ボトルネックリンクの帯域としてもよい。
【０１４７】
転送レート制御部１２は、以上のようにして統計処理を行った後、得られたボトルネックリンクの帯域の値を保持する。
【０１４８】
ステップＳ１２７において、クライアント４から報告された帯域が最大転送レートより大きいと判定された場合、転送レート制御部１２は、クライアント４から受信した報告パケットは、不良データであると判断し、統計処理は行わず、ステップＳ１２９に進む。
【０１４９】
ステップＳ１２９において、転送レート制御部１２は、現在保持している転送レート（ステップＳ１２６の処理により算出された転送レート）と、クライアント４から報告され、上述したようにして統計処理されたボトルネックリンクの帯域の値を比較し、クライアント４から報告され統計処理されたボトルネックリンクの帯域の値が、現在保持している転送レートより大きいと判定した場合、ステップＳ１３０に進む。
【０１５０】
ステップＳ１３０において、転送レート制御部１２は、転送レートを増加させるか、もしくは、転送レートを維持するように調整する。
【０１５１】
ここで行われる転送レートの調整方法としては、特に問わないが、例えば、フレームレートを調整する方法や、エンコードパラメータ（ｂｐｐ：圧縮率）を調整する方法などがある。
【０１５２】
例えば、現在保持している最大転送レートをＲ＿ｎｏｗ、エンコードパラメータをｘ＿ｎｏｗ  ｂｐｐ、フレームレートをｙ＿ｎｏｗ  ｆｐｓ、クライアント４から報告された転送レートをＲ＿ｃとすると、エンコードパラメータを調整する方法の場合、エンコードパラメータｘ＿ｎｏｗ・ｂｐｐは、次式（６）で表わされる。
エンコードパラメータｘ＿ｎｏｗ  ｂｐｐ＝ｘ＿ｎｏｗ  ｂｐｐ・Ｒ＿ｃ／Ｒ＿ｎｏｗ      ・・・（６）
【０１５３】
また、フレームレートを調整する方法の場合、フレームレートｙ＿ｎｏｗ  ｆｐｓは、次式（７）で表わされる。
フレームレートｙ＿ｎｏｗ  ｆｐｓ＝ｙ＿ｎｏｗ  ｆｐｓ・Ｒ＿ｃ／Ｒ＿ｎｏｗ            ・・・（７）
【０１５４】
ステップＳ１２９において、クライアント４から報告され統計処理されたボトルネックリンクの帯域の値が、現在保持している転送レートより小さいと判定された場合、ステップＳ１３１に進み、転送レート制御部１２は、転送レートを、クライアント４から報告され統計処理されたボトルネックリンクの帯域の値になるように調整する。ここで行われる転送レートの調整方法としては、例えば、フレームレートを下げるか、あるいは、エンコードパラメータ（ｂｐｐ）を小さくするようにする（すなわち、１フレーム当たりの情報量を下げるか、あるいは、圧縮率を上げる）。
【０１５５】
以上のようにして、クライアント４から報告されたボトルネックリンクの帯域に基づいて、転送レートが最適に調整される。
【０１５６】
図１８は、サーバ２からクライアント４にＦＥＣパケットを送信し、クライアント２がサーバ２から受信したＦＥＣパケットに基づいて、ボトルネックリンクの帯域を算出し、その帯域をサーバ２に報告し、サーバ２が、クライアント４から報告された帯域に基づいて、転送レートを調整するまでの処理を模式的に示している。同図において、横軸は、時間を表わし、縦軸の上側がサーバ２を表わし、縦軸の下側がクライアント４を表わしている。
【０１５７】
図１８の例の場合、サーバ２からクライアント４に対し、ＲＴＰタイムスタンプ３０００、およびＲＴＰタイムスタンプ６０００のデータが送信されている。ＲＴＰタイムスタンプ３０００のデータには、シーケンス番号１乃至４のＲＴＰパケット、およびＦＥＣパケット１，２が含まれており、ＲＴＰタイムスタンプ６０００のデータには、シーケンス番号５乃至８のＲＴＰパケット、およびＦＥＣパケット１，２が含まれている。
【０１５８】
サーバ２は、シーケンス番号１乃至４のＲＴＰパケットをクライアント４に送信した後、ＦＥＣパケット１，２を、バックツーバックで（両パケットの間隔を空けずに）クライアント４に送信する。クライアント４は、時刻Ｔ１にＦＥＣパケット１を受信し、時刻Ｔ２にＦＥＣパケット２を受信し、それらの受信時刻の間隔から、上記式（４）に従って、ボトルネックリンクの帯域Ｂを算出する。
【０１５９】
算出の結果、ボトルネックリンクの帯域Ｂが、例えば、２．５Ｍｂｐｓであった場合、クライアント４は、この算出結果をパケット化し、同じ内容の報告パケット１，２を、バックツーバックでサーバ２に送信する。サーバ２は、クライアント４から送信されてきた報告パケット１，２を受信し、それらの受信時刻の間隔から、上記式（４）に従って、ボトルネックリンクの帯域Ｂを算出する。そして、サーバ２は、算出したボトルネックリンクの帯域と、報告パケットに埋め込まれたボトルネックリンクの帯域を比較し、その比較結果に基づいて、転送レートの調整を行う。
【０１６０】
以上のように、両パケットのサイズが等しいＦＥＣパケット１，２を用いてパケットペアの測定を行うことにより、それらの受信時刻の間隔から、本来のデータに影響することなくボトルネックリンクの帯域を容易に算出することができる。
【０１６１】
また、ＦＥＣパケットを用いるだけでなく、ＲＴＰパケットを用いてパケットペアの測定を行うことも可能である。この場合に用いられるＲＴＰパケットのフォーマットを図１９に示す。図１９のＲＴＰパケットのフォーマットは、基本的に、図８におけるＲＴＰパケットのヘッダ部のフォーマットとほぼ同様の構成とされており、Ｖｅｒｓｉｏｎ（ｖ）、Ｐａｄｄｉｎｇ（ｐ）、Ｅｘｔｎｓｉｏｎ（ｘ）、ＣＳＲＣ  Ｃｏｕｎｔ（ｃｃ）、Ｍａｒｋｅｒ（ｍ）、Ｐａｙｌｏａｄ  Ｔｙｐｅ（Ｐｔ）、Ｓｅｑｕｅｎｃｅ、Ｔｉｍｅｓｔａｍｐ、ＳＳＲＣ／ＣＳＲＣ、Ｏｒｉｇｉｎａｌ  Ｄａｔａの他、拡張領域に、１６ビットのＤｅｆｉｎｅｄ−ｂｙ−ｐｒｏｆｉｌｅ、１６ビットのＥｘｔｅｎｓｉｏｎ  ｌｅｎｇｔｈ、および３２ビットのＯｒｉｇｉｎａｌ  ｄａｔａ  ｓｉｚｅが含まれている。
【０１６２】
Ｄｅｆｉｎｅｄ−ｂｙ−ｐｒｏｆｉｌｅは、定義済みプロファイルを表わし、Ｅｘｔｅｎｓｉｏｎ  ｌｅｎｇｔｈは、拡張ビットの長さを表わし、Ｏｒｉｇｉｎａｌ  ｄａｔａ  ｓｉｚｅは、オリジナルデータのサイズを表わしている。
【０１６３】
ＲＴＰパケット作成部１６のパケタイザ３１は、ＲＴＰパケットのヘッダ部とデータ部を結合する際に、エントリ保持部３４で保持されているサイズ分だけ、データ部保持部３２からデータの結合を行うのではなく、データ部保持部３２で保持されているデータをそのまま結合し、ＲＴＰヘッダの拡張領域にヘッダ（ｘ）のフラグを立て、Ｏｒｉｇｉｎａｌ  ｄａｔａ  ｓｉｚｅ部分に、エントリ保持部３４で保持されている値を埋め込むようにし、オリジナルデータ以外には、１もしくは０をパディングするようにする。これにより、最大サイズのパケットが作成される。
【０１６４】
なお、ＲＴＰパケットを用いてパケットペアの測定を行う場合にも、サーバ２の転送処理は、基本的に、図９で説明したステップＳ７の処理を除いた、ステップＳ１乃至Ｓ６およびステップＳ８乃至Ｓ１０の処理と同様とされるが、ステップＳ６のＲＴＰパケット作成処理および送信処理の詳細として説明した図１０のステップＳ２９におけるＲＴＰヘッダ部とデータ部の結合処理（図１１）が異なる。
【０１６５】
そこで、図２０を参照して、ＲＴＰパケットを用いた場合のＲＴＰヘッダ部とデータ部の結合処理の詳細について説明する。
【０１６６】
ステップＳ１５１において、パケタイザ３１は、自己の初期化を行う。ステップＳ１５２において、パケタイザ３１は、エントリ保持部３４（図５）を参照し、エントリがあるか否かを判定し、エントリがあると判定した場合、ステップＳ１５３に進み、現在参照しているエントリが先頭２つのエントリであるか否かを判定する。
【０１６７】
ステップＳ１５３において、現在参照しているエントリが先頭２つのエントリであると判定された場合、ステップＳ１５４に進み、パケタイザ３１は、エントリのシーケンス番号のアドレス部分（すなわち、データが保持されているアドレス）から、最大サイズ分のデータを取得する。ここで、最大サイズは、最大伝送ユニット（ＭＴＵ：Ｍａｘｉｍｕｍ  Ｔｒａｎｓｆｅｒ  Ｕｎｉｔ）の値を超えないような値に設定されている。
【０１６８】
ステップＳ１５５において、パケタイザ３１は、現在参照しているエントリのシーケンス番号のＲＴＰヘッダを、ヘッダ部保持部３３から取得する。ステップＳ１５６において、パケタイザ３１は、ＲＴＰヘッダの拡張領域のオリジナルデータサイズ領域の部分に、ステップＳ１５４の処理で取得したオリジナルデータのデータサイズを書き込む。ステップＳ１５７において、パケタイザ３１は、ステップＳ１５４の処理で取得したデータとステップＳ１５６の処理で拡張領域にオリジナルデータサイズが書き込まれたＲＴＰヘッダを結合する。
【０１６９】
このように、１フレームを構成するデータの先頭２つのＲＴＰパケットに対して、その拡張領域にオリジナルデータサイズを書き込み、オリジナルデータ以外には、パディングデータを書き込み、パケットペアに用いるためのＲＴＰ拡張を適用した最大サイズのパケットを作成することができる。
【０１７０】
一方、ステップＳ１５３において、現在参照しているエントリが先頭２つのエントリではないと判定された場合、ステップＳ１５８に進み、パケタイザ３１は、エントリのシーケンス番号のアドレス部分から、エントリにあるサイズ分だけデータを取得する。
【０１７１】
ステップＳ１５９において、パケタイザ３１は、現在参照しているエントリのシーケンス番号のＲＴＰヘッダを、ヘッダ部保持部３３から取得する。ステップＳ１６０において、パケタイザ３１は、ステップＳ１５８の処理で取得したデータと、ステップＳ１５９の処理で取得したＲＴＰヘッダを結合する（図１２）。
【０１７２】
このように、ステップＳ１５８乃至Ｓ１６０の処理は、上述した図１１のステップＳ４３乃至Ｓ４５の処理と同様であり、通常のＲＴＰパケットが作成される。
【０１７３】
ステップＳ１５７またはステップＳ１６０の処理の後、ステップ１６１において、パケタイザ３１は、次のエントリへ処理対象を移行した後、ステップＳ１５２に戻り、上述した処理を繰り返し実行する。
【０１７４】
ステップＳ１５２において、エントリ保持部３４に処理対象となるエントリがなくなったと判定された場合（すなわち、エントリにある全てのデータがＲＴＰにパケット化されたと判定された場合）、処理は、図１０のステップＳ３０にリターンする。
【０１７５】
このように、サーバ２は、１フレームを構成するデータの先頭２つのＲＴＰパケットに対して、その拡張領域にオリジナルデータサイズを書き込み、オリジナルデータ以外には、１もしくは０がパディングされたデータを書き込み、最大サイズの２つのパケットを作成することができる。
【０１７６】
また、サーバ２は、１フレームを構成するデータの先頭２つのＲＴＰパケットをＲＴＰ拡張パケットにするだけでなく、例えば、１フレームを構成するデータの末尾２つのＲＴＰパケットをＲＴＰ拡張パケットにしたり、あるいは、１フレームを構成するデータの所定位置のＲＴＰパケットをＲＴＰ拡張パケットにするようにしてもよい。
【０１７７】
図２１は、図２０の処理に対応して、通信部１８が実行する、ストリーミング処理を示すフローチャートである。なお、この処理は、図１４の処理と基本的に同様であるが、図１４のステップＳ８３における、送信データがＦＥＣパケットであるか否かの判定処理に代わり、図２０のステップＳ１７３では、送信データがＲＴＰ拡張のついたパケットであるか否かの判定処理に変更され、図１４のステップＳ８８における、１つ目のＦＥＣパケットであるか否かの判定処理に代わり、図２０のステップＳ１７８では、１つ目のＲＴＰ拡張の付いたパケットであるか否かの判定処理に変更され、図１４のステップＳ８９における、２つ目のＦＥＣパケットであるか否かの判定処理に代わり、図２０のステップＳ１７９では、２つ目のＲＴＰ拡張の付いたパケットであるか否かの判定処理に変更される。
【０１７８】
以上のように、サーバ２は、ＲＴＰパケットのうち、先頭２つのＲＴＰパケットに対し、その拡張領域にオリジナルデータサイズを書き込んだサイズの等しい２つのＲＴＰパケット（すなわち、ＲＴＰ拡張の付いたパケット）を作成し、それをパケットペアで送信することができる。
【０１７９】
次に、図２２のフローチャートを参照して、上述したようにしてサーバ２で作成されたＲＴＰ拡張の付いたＲＴＰパケットを受信し、ボトルネックリンクの帯域を推定し、推定帯域を報告するパケットを作成するまでのクライアント４の処理について説明する。
【０１８０】
ステップＳ１９１において、クライアント４の制御部４８は、時刻保持部４６のデータの初期化を行うとともに、バッファ４２の初期化を行う。ステップＳ１９２において、通信部４１は、制御部４８の制御の下、パケット通信網３を介してサーバ２よりデータを受信したか否かを判定し、データを受信するまで待機する。
【０１８１】
ステップＳ１９２において、データを受信したと判定された場合、ステップＳ１９３に進み、通信部４１は、受信データがＲＴＰ拡張の付いたパケットであるか否かを判定し、受信データがＲＴＰ拡張の付いたパケットであると判定した場合、ステップＳ１９４に進む。ステップＳ１９４において、通信部４１は、受信したＲＴＰ拡張の付いたパケットの拡張部分に埋め込まれているオリジナルデータサイズに基づいて、パディングデータ部分を削除し、オリジナルデータのみをバッファ４２に転送する。
【０１８２】
ステップＳ１９５において、通信部４１は、受信したＲＴＰ拡張の付いたパケットのヘッダ部のタイムスタンプを参照し、新しいタイムスタンプであるか否か、すなわち、新しく受信したＲＴＰ拡張の付いたパケットであるか否かを判定し、新しいタイムスタンプであると判定した場合、ステップＳ１９６に進み、時刻保持部４６に、新しく受信したＲＴＰ拡張の付いたパケットの受信時刻を保持させる。
【０１８３】
ステップＳ１９５において、新しいタイムスタンプではない、すなわち、過去に受信したＲＴＰ拡張の付いたパケットのタイムスタンプであると判定された場合、ステップＳ１９７に進み、通信部４１は、受信したＲＴＰ拡張の付いたパケットにパケットロスが発生していないか否かを判定し、パケットロスが発生していないと判定した場合、ステップＳ１９８に進む。なお、パケットロスが発生しているか否かの判定は、ヘッダ部のシーケンス番号を参照することで検知することができる。
【０１８４】
ステップＳ１９７において、通信部４１は、受信したＲＴＰ拡張の付いたパケットを帯域算出部４５に供給し、ボトルネックリンクの帯域を算出させる。帯域算出部４５は、供給されたＲＴＰ拡張の付いたパケットから、上記式（４）に従って、ボトルネックリンクの帯域Ｂを算出し、算出結果をパケット作成部４７に供給する。なお、ここでの受信サイズとは、オリジナルデータサイズではなく、ＲＴＰパケット全体のサイズである。
【０１８５】
ステップＳ１９９において、パケット作成部４７は、ステップＳ１９８の処理で算出された帯域Ｂの値をサーバ２に報告するためのパケットを、図１６に示したフォーマットに従って作成する。ここで、パケット作成部４７は、Ｄａｔａ部に、算出した帯域Ｂの値を埋め込むとともに、Ｓｅｑ部分に、パケットのシーケンス番号を書き込む。なお、パケットのシーケンス番号は、１から始まり、１パケット送信する毎に１だけインクリメントされる。
【０１８６】
ステップＳ２００において、通信部４１は、ステップＳ１９９の処理で作成された帯域Ｂの値が埋め込まれた報告パケット１をサーバ２へ送信し、ステップＳ２０１において、パケット送信の間隔を空けずに、同じ内容の報告パケット２をサーバ２へ送信する。すなわち、Ｄａｔａ部が同じ２つの報告パケットがバックツーバックでサーバ２へ送信される。
【０１８７】
ステップＳ１９７において、受信したＲＴＰ拡張の付いたパケットにパケットロスが発生していると判定された場合、ＲＴＰ拡張の付いたパケットペアの１つ目のパケットにパケットロスが発生しているか、あるいは、ＲＴＰ拡張の付いたパケットがリオーダしたと判断される。この場合、帯域の算出処理および報告パケットの作成処理は行われず、ステップＳ１９２に戻り、上述した処理が繰り返し実行される。
【０１８８】
ステップＳ１９３において、受信データがＲＴＰ拡張の付いたパケットではないと判定された場合、すなわち、受信データが通常のＲＴＰパケットであると判定された場合、ステップＳ２０２に進み、通信部４１は、受信データをバッファ４２に供給した後、ステップＳ１９２に戻り、上述した処理を繰り返し実行する。
【０１８９】
このように、ＲＴＰ拡張の付いた２つのパケットを受信することにより、ボトルネックリンクの帯域を算出（推測）し、算出結果を報告パケットに埋め込んでサーバ２に報告することができる。
【０１９０】
なお、以上のクライアント４の処理（図２２）により送信されてきた報告パケットを受信し、ボトルネックリンクの帯域を算出し、転送レートを調整するまでのサーバ２の転送レート制御部１２の処理は、上述した図１７の処理と同様であるため、その説明は省略する。
【０１９１】
以上のように、両パケットのサイズが等しいＲＴＰ拡張の付いたパケット１，２を用いてパケットペアの測定を行うことにより、それらの受信時刻の間隔から、ボトルネックリンクの帯域を容易に算出することができるとともに、冗長データを送る必要がなくなる。
【０１９２】
上述した一連の処理（図９乃至図１１、図１３、図１４、図１７、図２０、および図２１に示したサーバ２の処理、並びに、図１５および図２２に示したクライアント４の処理）は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
【０１９３】
図２３は、汎用のコンピュータの内部の構成例を示す図である。コンピュータのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２に記憶されているプログラム、または記憶部１０８からＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３にロードされたプログラムに従って各種の処理を実行する。ＲＡＭ１０３にはまた、ＣＰＵ１０１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０１９４】
ＣＰＵ１０１、ＲＯＭ１０２、およびＲＡＭ１０３は、バス１０４を介して相互に接続されている。このバス１０４にはまた、入出力インターフェース１０５も接続されている。
【０１９５】
入出力インターフェース１０５には、ボタン、スイッチ、キーボードあるいはマウスなどで構成される構成される入力部１０６、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）やＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）などのディスプレイ、並びにスピーカなどで構成される出力部１０７、ハードディスクなどで構成される記憶部１０８、およびモデムやターミナルアダプタなどで構成される通信部１０９が接続されている。通信部１０９は、インターネットを含むネットワークを介して通信処理を行う。
【０１９６】
入出力インターフェース１０５にはまた、必要に応じてドライブ１１０が接続され、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどよりなるリムーバブルメディア１１１が適宜装着され、そこから読み出されたコンピュータプログラムが、記憶部１０８にインストールされる。
【０１９７】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを記録する記録媒体は、図２３に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）を含む）、光磁気ディスク（ＭＤ（Ｍｉｎｉ−Ｄｉｓｃ）（登録商標）を含む）、もしくは半導体メモリなどよりなるリムーバブルメディア１１１により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているＲＯＭ１０３またはハードディスクなどの記憶部１０８で構成される。
【０１９８】
なお、本明細書において、プログラム格納媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１９９】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表わすものである。
【０２００】
【発明の効果】
以上のように、第１の本発明によれば、ボトルネックリンクの帯域を測定し、転送レートを調整することが可能となる。特に、冗長データを用いることで、本来のデータに影響することなく、双方向のボトルネックリンクの帯域を測定し、その測定結果に基づいて転送レートを調整することが可能となる。
【０２０１】
第２の本発明によれば、ボトルネックリンクの帯域を測定し、転送レートを調整することが可能となる。特に、冗長データを送信することで、受信側にボトルネックリンクの帯域を算出させることができ、その算出結果が埋め込まれたパケットを受信することで、送信側でボトルネックリンクの帯域を算出することができ、双方向の算出結果に基づいて転送レートを調整することが可能となる。
【０２０２】
第３の本発明によれば、ボトルネックリンクの帯域を測定することが可能となる。特に、送信側から送信されてきた冗長データの受信時刻に基づいて、ボトルネックリンクの帯域を算出するとともに、その算出結果を送信側に報告することが可能となる。
【０２０３】
第４の本発明によれば、ボトルネックリンクの帯域を測定し、転送レートを調整することが可能となる。特に、送信データの一部を拡張した最大サイズのデータを用いることで、本来のデータに影響することなく、双方向のボトルネックリンクの帯域を測定し、その測定結果に基づいて転送レートを調整することが可能となる。
【０２０４】
第５の本発明によれば、ボトルネックリンクの帯域を測定し、転送レートを調整することが可能となる。特に、送信データの一部を拡張した最大サイズのデータを送信することで、受信側にボトルネックリンクの帯域を算出させることができ、その算出結果が埋め込まれたパケットを受信することで、送信側でボトルネックリンクの帯域を算出することができ、双方向の算出結果に基づいて転送レートを調整することが可能となる。
【０２０５】
第６の本発明によれば、ボトルネックリンクの帯域を測定することが可能となる。特に、送信側から送信されてきた送信データの一部が拡張された最大サイズのデータの受信時刻に基づいて、ボトルネックリンクの帯域を算出するとともに、その算出結果を送信側に報告することが可能となる。
【図面の簡単な説明】
【図１】従来のパケットペア手法を説明するための図である。
【図２】本発明を適用したストリーミング配信システムの構成例を示す図である。
【図３】サーバの構成例を示すブロック図である。
【図４】ＲＴＰパケット作成部の詳細な構成例を示す図である。
【図５】エントリ保持部が保持する情報の例を示す図である。
【図６】クライアントの構成例を示すブロック図である。
【図７】ＲＴＰパケットのヘッダ部のフォーマットを説明するための図である。
【図８】ＦＥＣデータのヘッダ部のフォーマットを説明するための図である。
【図９】データ転送処理を説明するフローチャートである。
【図１０】図９のステップＳ６のＲＴＰパケット作成処理および送信処理の詳細を説明するフローチャートである。
【図１１】図１０のステップＳ２９のヘッダ部とデータ部の結合処理の詳細を説明するフローチャートである。
【図１２】ＲＴＰヘッダとデータ部の結合処理を説明するための図である。
【図１３】図９のステップＳ７のＦＥＣパケット作成処理および送信処理の詳細を説明するフローチャートである。
【図１４】図９のステップＳ８のストリーミング処理の詳細を説明するフローチャートである。
【図１５】クライアントの処理を説明するフローチャートである。
【図１６】報告パケットのフォーマットを説明するための図である。
【図１７】転送レート制御部の処理を説明するフローチャートである。
【図１８】サーバとクライアント間の帯域をそれぞれ算出し、転送レートを調整するまでの処理を模式的に示す図である。
【図１９】ＲＴＰパケットのフォーマットを説明するための図である。
【図２０】図１０のステップＳ２９のＲＴＰヘッダ部とデータ部の結合処理の詳細を説明するフローチャートである。
【図２１】ストリーミング処理を説明するフローチャートである。
【図２２】クライアントの処理を説明するフローチャートである。
【図２３】汎用のコンピュータの内部の構成例を示す図である。
【符号の説明】
２  サーバ，  ３  ネットワーク，  ４  クライアント，  １１  エンコーダ，  １６  ＲＴＰパケット作成部，  １７  ＦＥＣパケット作成部，  １８  通信部，２０  制御部，  ２２  ドライブ，  ２３  リムーバブルメディア，  ３１  パケタイザ，  ４１  通信部，  ４５  帯域算出部，  ４７  パケット作成部，
４８  制御部
【図１】
2004266741.tif 000005
【図２】
2004266741.tif 000006
【図３】
2004266741.tif 000007
【図４】
2004266741.tif 000008
【図５】
2004266741.tif 000009
【図６】
2004266741.tif 000010
【図７】
2004266741.tif 000011
【図８】
2004266741.tif 000012
【図９】
2004266741.tif 000013
【図１０】
2004266741.tif 000014
【図１１】
2004266741.tif 000015
【図１２】
2004266741.tif 000016
【図１３】
2004266741.tif 000017
【図１４】
2004266741.tif 000018
【図１５】
2004266741.tif 000019
【図１６】
2004266741.tif 000020
【図１７】
2004266741.tif 000021
【図１８】
2004266741.tif 000022
【図１９】
2004266741.tif 000023
【図２０】
2004266741.tif 000024
【図２１】
2004266741.tif 000025
【図２２】
2004266741.tif 000026
【図２３】
2004266741.tif 000027