(57)【要約】【課題】  装置またはネットワークの負荷を軽減することができるデータ送信装置、データ受信装置、データ通信システム、データ送信方法及び受信方法を提供すること。【解決手段】  本発明では、連続性を持つパケットの送信間隔が一定に規定されているパケットの場合（ステップ１０５）、データ送信装置が当該パケットを送信し（ステップ１０６）、データ受信装置が、その送信間隔と、各パケットを受信する受信間隔とに基づき遅延を計測する。これにより、例えばＲＴＣＰパケットを用いないで遅延を計測することができるので、装置またはネットワークの負荷を軽減することができる。【選択図】  図１１
2005269000.tif 000002
【特許請求の範囲】
【請求項１】
所定のデータが含まれ連続性を持つ複数のパケットを生成する手段と、
生成された前記各パケットを、ネットワークを介して接続されたデータ受信装置に時間的に一定の送信間隔で送信可能であり、前記データ受信装置が、前記送信間隔と送信された前記各パケットを受信するときの受信間隔とに基づき前記ネットワークでの伝送遅延を計測できるように、前記送信間隔に関するデータを前記データ受信装置に送信可能な送信手段と
を具備することを特徴とするデータ送信装置。
【請求項２】
請求項１に記載のデータ送信装置であって、
前記各パケットの前記送信間隔が規定されているか否かを判断する手段と、
前記送信間隔が規定されていないと判断された場合、ダミーパケットを生成し、前記ダミーパケットを含めて前記各パケットを前記送信手段により送信させるときの送信間隔を一定に補償する手段と
をさらに具備することを特徴とするデータ送信装置。
【請求項３】
請求項２に記載のデータ送信装置であって、
前記データ受信装置の負荷状況のデータである装置負荷データを当該データ受信装置から取得する手段と、
前記送信間隔が規定されていないと判断された場合、取得した前記装置負荷データに基づき、前記補償手段により前記送信間隔を一定に補償させるか否かを判断する手段と
をさらに具備することを特徴とするデータ送信装置。
【請求項４】
請求項２に記載のデータ送信装置であって、
前記ネットワークの負荷状況のデータであるネットワーク負荷データを前記データ受信装置から取得する手段と、
取得したネットワーク負荷データに基づき、前記補償手段により前記送信間隔を一定に補償させるか否かを判断する手段と
をさらに具備することを特徴とするデータ送信装置。
【請求項５】
請求項１に記載のデータ送信装置であって、
前記各パケットの前記送信間隔が規定されているか否かを判断する手段と、
前記送信間隔が規定されていないと判断された場合、前記データ受信装置に前記伝送遅延を計測させるために必要な遅延計測用パケットを生成し、該遅延計測用パケットを前記データ受信装置に送信する手段と
をさらに具備することを特徴とするデータ送信装置。
【請求項６】
請求項５に記載のデータ送信装置であって、
前記データ受信装置の負荷状況のデータである装置負荷データを当該データ受信装置から取得する手段と、
取得した前記装置負荷データに基づき、前記遅延計測用パケットを送信する手段により該遅延計測用パケットを送信させるか否かを判断する手段と
をさらに具備することを特徴とするデータ送信装置。
【請求項７】
請求項５に記載のデータ送信装置であって、
前記ネットワークの負荷状況のデータであるネットワーク負荷データを前記データ受信装置から取得する手段と、
取得したネットワーク負荷データに基づき、前記遅延計測用パケットを送信する手段により該遅延計測用パケットを送信させるか否かを判断する手段と
をさらに具備することを特徴とするデータ送信装置。
【請求項８】
ネットワークを介して接続されたデータ送信装置から時間的に一定の送信間隔で送信され所定のデータが含まれた連続性を持つ複数のパケットと、前記データ送信装置から、前記各パケットが前記送信間隔で送信されるときの該送信間隔に関するデータとを受信可能な受信手段と、
受信した前記送信間隔に関するデータと前記各パケットの受信間隔とに基づき前記ネットワークでの伝送遅延を計測する手段と
を具備することを特徴とするデータ受信装置。
【請求項９】
請求項８に記載のデータ受信装置であって、
前記計測手段は、前記ネットワークでの片道の伝送遅延を計測する手段を有することを特徴とするデータ受信装置。
【請求項１０】
所定のデータが含まれ連続性を持つ複数のパケットを生成する手段と、生成された前記各パケットを時間的に一定の送信間隔で送信可能であり、前記送信間隔に関するデータを送信可能な送信手段とを有するデータ送信装置と、
ネットワークを介して前記データ送信装置から送信された前記各パケットと、前記データ送信装置から送信された前記送信間隔に関するデータとを受信可能な受信手段と、受信した前記送信間隔に関するデータと、前記各パケットの受信間隔とに基づき前記ネットワークでの伝送遅延を計測する手段とを有するデータ受信装置と
を具備することを特徴とするデータ通信システム。
【請求項１１】
所定のデータが含まれ連続性を持つ複数のパケットを生成するステップと、
生成された前記各パケットを、ネットワークを介して接続されたデータ受信装置に時間的に一定の送信間隔で送信するステップと、
前記データ受信装置が、前記送信間隔と送信された前記各パケットを受信するときの受信間隔とに基づき前記ネットワークでの伝送遅延を計測できるように、前記送信間隔に関するデータを前記データ受信装置に送信するステップと
を具備することを特徴とするデータ送信方法。
【請求項１２】
ネットワークを介して接続されたデータ送信装置から時間的に一定の送信間隔で送信され所定のデータが含まれた連続性を持つ複数のパケットを受信するステップと、
前記データ送信装置から、前記各パケットが前記送信間隔で送信されるときの該送信間隔に関するデータを受信するステップと、
受信した前記送信間隔に関するデータと前記各パケットの受信間隔とに基づき前記ネットワークでの伝送遅延を計測するステップと
を具備することを特徴とするデータ受信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定のデータが含まれるパケットを用いてデータの伝送遅延を計測可能なデータ送信装置、データ受信装置、データ通信システム、データ送信方法及び受信方法に関する。
【背景技術】
【０００２】
従来から、例えばインターネット等で動画等のデータストリームのリアルタイム送受信を行うためのプロトコルとして、ＲＴＰ（Real-Time Transport Protocol）が用いられている。リアルタイム送受信を行う場合に、例えばデータストリームを配信する配信サーバと受信端末機器との間のデータの伝送遅延（ＲＴＴ：Round-Trip Time）（ジッタ）が重要な要素となる。ＲＴＴを計測する手法としては、ＲＦＣ（Request for Comments）１８８９で提案されているＲＴＣＰ（RTP Control Protocol）パケット等を用いて計測する手法が主流である（例えば、特許文献１参照。）。
【０００３】
この手法では、受信端末機器がEchoパケットを配信サーバに送信し、当該配信サーバがそのEchoパケットを受信してからEcho-Replyパケットを生成して受信端末機器に送信する。受信端末機器がEcho-Replyパケットを受信した時刻から、Echoパケットを送信した時刻と、配信サーバがEcho-Replyパケットを生成して送信するまでの処理時間とを引いた時間をＲＴＴとして受信端末機器が把握する。
【特許文献１】特開２００３−３０９６１７号公報（段落[０００３]等）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の遅延を計測する手法は、新しくＲＴＣＰパケットを生成し送受信処理を行うため機器の負荷、ネットワーク帯域の負荷等を増加させてしまうことがある。計測精度を上げようとすると、ＲＴＣＰパケット等の計測パケットを送出する回数を増やしてしまうため、上記負荷の増加を招いてしまい、かえって遅延を増加させてしまう場合もあり得る。
【０００５】
別の遅延計測方法として、端末ごとの時刻を用いて遅延を計測する方法も考えられているが、端末ごとに時刻を管理しており、時刻差が生じてしまう。また２つの機器の時刻を正確に合わせることは難しいため、送信時刻と受信した時刻とを単純に比較するだけでは、誤差が出てしまう。
【０００６】
以上のような事情に鑑み、本発明の目的は、装置またはネットワークの負荷を軽減することができるデータ送信装置、データ受信装置、データ通信システム、データ送信方法及び受信方法を提供することにある。
【０００７】
本発明の別の目的は、高精度にネットワークにおけるデータの伝送遅延を計測することができる技術を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、所定のデータが含まれ連続性を持つ複数のパケットを生成する手段と、生成された前記各パケットを、ネットワークを介して接続されたデータ受信装置に時間的に一定の送信間隔で送信可能であり、前記データ受信装置が、前記送信間隔と送信された前記各パケットを受信するときの受信間隔とに基づき前記ネットワークでの伝送遅延を計測できるように、前記送信間隔に関するデータを前記データ受信装置に送信可能な送信手段とを具備する。
【０００９】
本発明において、連続性を持つ複数のパケットとしては、例えば、音声及び映像のうち少なくとも一方のデータを含むメディアパケットが挙げられる。しかし、これに限られるものではない。以下、同様である。
【００１０】
本発明において、送信手段は、送信しようとするパケットの送信間隔が予め一定に規定されているか否かに関わらず、常に一定の送信間隔でパケットを送信可能な手段であってもよい。具体的には、各パケットの送信間隔を設定する手段を設け、設定された送信間隔で送信することも可能である。あるいは、送信しようとする各パケットの送信間隔が規定されていない場合、送信手段は、送信間隔を一定にするためのバッファを有していればよい。つまり、例えば各パケットを当該バッファに保持してから送信間隔を一定にしてバッファから抽出して送信すればよい。しかし、リアルタイム性を要求される場合には、極力バッファ量を小さくすることが望ましい。
【００１１】
一方、送信手段は、このように常に一定の送信間隔で送信するのではなく、パケットを送信パケットの送信間隔が規定されているパケットについてのみ、その規定された一定の送信間隔で送信するようにしてもよい。
【００１２】
本発明では、データ送信装置が連続性を持つパケットの送信間隔を一定にして送信し、データ受信装置が、その送信間隔と、各パケットを受信する受信間隔とに基づき遅延を計測する。これにより、例えばＲＴＣＰパケットを用いないで遅延を計測することができるので、装置またはネットワークの負荷を軽減することができる。すなわち、主のデータとして普通に送受信を行うパケット（例えば上記メディアパケット）を利用することで遅延計測のためのみのパケットを用いる必要がなくなる。また、受信間隔及び送信間隔に関するデータを用いることにより、例えばネットワークでの片道の伝送遅延を計測することができ、従来のＲＴＴに比べ高精度に遅延計測することができる。このように片道遅延を計測できることより、ネットワークの帯域や負荷が片道ごとに異なる場合は、同期制御等に有効である。例えば、同期制御の１つであるビデオとオーディオの同期制御において、遅延が装置の方向ごとに異なる場合は、その方向に応じて効果的な制御をすることができる。また、もちろんＲＴＴも計測することができる。
【００１３】
本発明では、パケットの送信間隔が規定されておらず、例えば送信間隔を一定にできない場合は、以下のように本発明を構成することもできる。
【００１４】
例えば、前記各パケットの前記送信間隔が規定されているか否かを判断する手段と、前記送信間隔が規定されていないと判断された場合、ダミーパケットを生成し、前記ダミーパケットを含めて前記各パケットを前記送信手段により送信させるときの送信間隔を一定に補償する手段とをさらに具備する。当該連続性を持つパケットの送信間隔が規定されていなければ、そのパケットだけでは遅延を計測することができない。したがって、この場合ダミーパケットを用いる。これにより、パケットの送信間隔を一定とすることができ、遅延を計測することができる。
【００１５】
本発明の一の形態によれば、前記データ受信装置の負荷状況のデータである装置負荷データを当該データ受信装置から取得する手段と、取得した前記装置負荷データに基づき、前記補償手段により前記送信間隔を一定に補償させるか否かを判断する手段とをさらに具備する。例えば、データ受信装置の負荷が大きい場合は、ダミーパケットを送信しないで、データ受信装置に遅延を計測させないようにすることができる。これにより、データ受信装置の負担を軽減することができる。
【００１６】
本発明の一の形態によれば、前記ネットワークの負荷状況のデータであるネットワーク負荷データを前記データ受信装置から取得する手段と、取得したネットワーク負荷データに基づき、前記遅延計測用パケットを送信する手段により該遅延計測用パケットを送信させるか否かを判断する手段とをさらに具備する。これにより、ネットワークの負荷が大きい場合、ダミーパケットを送信しないように制御することができる。これにより、ネットワークの負担を軽減することができる。ネットワークの負荷は例えばパケットのロス率等により把握することができる。データ送信装置は、例えばデータ受信装置で算出された当該ロス率をデータ受信装置から定期的または不定期に受信することでロス率を取得することができる。
【００１７】
本発明の一の形態によれば、前記各パケットの前記送信間隔が規定されているか否かを判断する手段と、前記送信間隔が規定されていないと判断された場合、前記データ受信装置に前記伝送遅延を計測させるために必要な遅延計測用パケットを生成し、該遅延計測用パケットを前記データ受信装置に送信する手段とをさらに具備する。当該連続性を持つパケットの送信間隔が規定されていなければ、そのパケットだけでは遅延を計測することができない。したがって、この場合は遅延計測用パケットを用いて遅延を計測すればよい。遅延計測用パケットとして例えばＲＴＣＰパケットを用いることができる。
【００１８】
本発明の一の形態によれば、前記データ受信装置の負荷状況のデータである装置負荷データを当該データ受信装置から取得する手段と、取得した前記装置負荷データに基づき、前記遅延計測用パケットを送信する手段により該遅延計測用パケットを送信させるか否かを判断する手段とをさらに具備する。例えば、データ受信装置の負荷が大きい場合は、遅延計測用パケットを送信しないで、データ受信装置に遅延を計測させないようにすることができる。これにより、データ受信装置の負担を軽減することができる。
【００１９】
本発明の一の形態によれば、前記ネットワークの負荷状況のデータであるネットワーク負荷データを前記データ受信装置から取得する手段と、取得したネットワーク負荷データに基づき、前記遅延計測用パケットを送信する手段により該遅延計測用パケットを送信させるか否かを判断する手段とをさらに具備する。これにより、ネットワークの負荷が大きい場合は、ダミーパケットを送信しないように制御することができる。これにより、ネットワークの負担を軽減することができる。
【００２０】
本発明に係るデータ受信装置は、ネットワークを介して接続されたデータ送信装置から時間的に一定の送信間隔で送信され所定のデータが含まれた連続性を持つ複数のパケットと、前記データ送信装置から、前記各パケットが前記送信間隔で送信されるときの該送信間隔に関するデータとを受信可能な受信手段と、受信した前記送信間隔に関するデータと前記各パケットの受信間隔とに基づき前記ネットワークでの伝送遅延を計測する手段とを具備する。
【００２１】
本発明では、例えばＲＴＣＰパケットを用いないで遅延を計測することができるので、装置またはネットワークの負荷を軽減することができる。また、受信間隔及び送信間隔に関するデータを用いることにより、例えばネットワークでの片道の伝送遅延を計測することができ、従来のＲＴＴに比べ高精度に遅延計測することができる。このように片道遅延を計測できることより、ネットワークの帯域や負荷が片道ごとに異なる場合は、同期制御等に有効である。また、もちろんＲＴＴも計測することができる。
【００２２】
本発明に係るデータ通信システムは、所定のデータが含まれ連続性を持つ複数のパケットを生成する手段と、生成された前記各パケットを時間的に一定の送信間隔で送信可能であり、前記送信間隔に関するデータを送信可能な送信手段とを有するデータ送信装置と、
ネットワークを介して前記データ送信装置から送信された前記各パケットと、前記データ送信装置から送信された前記送信間隔に関するデータとを受信可能な受信手段と、受信した前記送信間隔に関するデータと、前記各パケットの受信間隔とに基づき前記ネットワークでの伝送遅延を計測する手段とを有するデータ受信装置とを具備する。
【００２３】
本発明に係るデータ送信方法は、所定のデータが含まれ連続性を持つ複数のパケットを生成するステップと、生成された前記各パケットを、ネットワークを介して接続されたデータ受信装置に時間的に一定の送信間隔で送信するステップと、前記データ受信装置が、前記送信間隔と送信された前記各パケットを受信するときの受信間隔とに基づき前記ネットワークでの伝送遅延を計測できるように、前記送信間隔に関するデータを前記データ受信装置に送信するステップとを具備する。
【００２４】
本発明では、例えば、送信間隔に関するデータを予め送信しておき、その後、前記各パケットを一定の送信間隔で送信するようにすることができる。
【００２５】
本発明に係るデータ受信方法は、ネットワークを介して接続されたデータ送信装置から時間的に一定の送信間隔で送信され所定のデータが含まれた連続性を持つ複数のパケットを受信するステップと、前記データ送信装置から、前記各パケットが前記送信間隔で送信されるときの該送信間隔に関するデータを受信するステップと、受信した前記送信間隔に関するデータと前記各パケットの受信間隔とに基づき前記ネットワークでの伝送遅延を計測するステップとを具備する。
【００２６】
本発明では、例えば、送信間隔に関するデータを予め受信しておき、その後、前記各パケットを一定の送信間隔で送信された場合に、送信されたパケットを受信することができる。
【発明の効果】
【００２７】
以上のように、本発明によれば、装置またはネットワークの負荷を軽減することができ、高精度にデータの伝送遅延を計測することができる。また、装置のやり取りするデータ、装置負荷の状況、ネットワークの負荷の状況によって遅延の計測手法を切り替えることにより、様々な状況で遅延計測が可能となる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施の形態を図面に基づき説明する。
【００２９】
まず、本発明の一実施形態において前提となるネットワークシステムについて説明する。図１は、この発明のネットワークシステムの一例を示し、ネットワーク９を介して複数の情報処理装置１、２、３、４が接続されたものである。情報処理装置１、２、３、４は、例えば各種のＡＶ（Audio and Visual）機器やポータブル機器等である。
【００３０】
情報処理装置１について示すと、情報処理装置１は、コンピュータ機能部として情報処理コントローラ１１を備える。情報処理コントローラ１１は、メインプロセッサ２１−１、サブプロセッサ２３−１，２３−２，２３−３、ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）２５−１及びＤＣ（ディスクコントローラ）２７−１を有する。
【００３１】
メインプロセッサ２１−１は、サブプロセッサ２３−１，２３−２，２３−３によるプログラム実行（データ処理）のスケジュール管理と、情報処理コントローラ１１（情報処理装置１）の全般的な管理とを行う。ただし、メインプロセッサ２１−１内で管理のためのプログラム以外のプログラムが動作するように構成することもできる。その場合には、メインプロセッサ２１−１はサブプロセッサとしても機能することになる。メインプロセッサ２１−１は、ＬＳ（ローカルストレージ）２２−１を有する。
【００３２】
サブプロセッサは、１つでもよいが、望ましくは複数とする。本例は、複数の場合である。各サブプロセッサ２３−１，２３−２，２３−３は、メインプロセッサ２１−１の制御によって並列的かつ独立にプログラムを実行し、データを処理する。更に、場合によってメインプロセッサ２１−１内のプログラムがサブプロセッサ２３−１，２３−２，２３−３内のプログラムと連携して動作するように構成することもできる。後述する機能プログラムもメインプロセッサ２１−１内で動作するプログラムである。各サブプロセッサ２３−１，２３−２，２３−３も、ＬＳ（ローカルストレージ）２４−１，２４−２，２４−３を有する。
【００３３】
ＤＭＡＣ２５−１は、情報処理コントローラ１１に接続されたＤＲＡＭ（ダイナミックＲＡＭ）などからなるメインメモリ２６−１に格納されているプログラム及びデータにアクセスするものであり、ＤＣ２７−１は、情報処理コントローラ１１に接続された外部記録部２８−１，２８−２にアクセスするものである。
【００３４】
外部記録部２８−１，２８−２は、固定ディスク（ハードディスク）でも、リムーバブルディスクでもよく、また、ＭＯ，ＣＤ±ＲＷ，ＤＶＤ±ＲＷなどの光ディスク、メモリディスク、ＳＲＡＭ（スタティックＲＡＭ）、ＲＯＭなど、各種のものを用いることができる。したがって、ＤＣ２７−１は、ディスクコントローラと称するが、外部記録部コントローラである。図１の例のように、情報処理コントローラ１１に対して外部記録部２８を複数接続できるように、情報処理コントローラ１１を構成することができる。
【００３５】
メインプロセッサ２１−１、各サブプロセッサ２３−１，２３−２，２３−３、ＤＭＡＣ２５−１及びＤＣ２７−１は、バス２９−１によって接続される。
【００３６】
情報処理コントローラ１１には、当該の情報処理コントローラ１１を備える情報処理装置１を、ネットワーク全体を通して一意的に識別できる識別子が、情報処理装置ＩＤとして割り当てられる。
【００３７】
メインプロセッサ２１−１及び各サブプロセッサ２３−１，２３−２，２３−３に対しても同様に、それぞれを特定できる識別子が、メインプロセッサＩＤ及びサブプロセッサＩＤとして割り当てられる。
【００３８】
情報処理コントローラ１１は、ワンチップＩＣ（集積回路）として構成することが望ましい。他の情報処理装置２、３、４も、上記と同様に構成される。ここで、図１において親番号が同一であるユニットは枝番号が異なっていても、特に断りがない限り同じ働きをするものとする。また、以下の説明において枝番号が省略されている場合には、枝番号の違いにいる差異を生じないものとする。
【００３９】
上述したように、１つの情報処理コントローラ内の各サブプロセッサ２３は、独立にプログラムを実行し、データを処理するが、異なるサブプロセッサがメインメモリ２６内の同一領域に対して同時に読み出しまたは書き込みを行った場合には、データの不整合を生じ得る。そこで、サブプロセッサ２３からメインメモリ２６へのアクセスは、以下のような手順によって行う。
【００４０】
図２（Ａ）に示すように、メインメモリ２６は、複数のアドレスを指定できるメモリロケーションによって構成される。各メモリロケーションに対しては、データの状態を示す情報を格納するための追加セグメントが割り振られる。追加セグメントは、Ｆ／Ｅビット、サブプロセッサＩＤ及びＬＳアドレス（ローカルストレージアドレス）を含むものとされる。また、各メモリロケーションには、後述のアクセスキーも割り振られる。Ｆ／Ｅビットは、以下のように定義される。
【００４１】
Ｆ／Ｅビット＝０は、サブプロセッサ２３によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、読み出し不可であることを示す。また、Ｆ／Ｅビット＝０は、当該メモリロケーションにデータ書き込み可能であることを示し、書き込み後に１に設定される。
【００４２】
Ｆ／Ｅビット＝１は、当該メモリロケーションのデータがサブプロセッサ２３によって読み出されておらず、未処理の最新データであることを示す。当該メモリロケーションのデータは読み出し可能であり、サブプロセッサ２３によって読み出された後に０に設定される。また、Ｆ／Ｅビット＝１は、当該メモリロケーションがデータ書き込み不可であることを示す。
【００４３】
更に、上記Ｆ／Ｅビット＝０（読み出し不可／書き込み可）の状態において、当該メモリロケーションについて読み出し予約を設定することは可能である。Ｆ／Ｅビット＝０のメモリロケーションに対して読み出し予約を行う場合には、サブプロセッサ２３は、読み出し予約を行うメモリロケーションの追加セグメントに、読み出し予約情報として当該サブプロセッサ２３のサブプロセッサＩＤ及びＬＳアドレスを書き込む。
【００４４】
その後、データ書き込み側のサブプロセッサ２３によって、読み出し予約されたメモリロケーションにデータが書き込まれ、Ｆ／Ｅビット＝１（読み出し可／書き込み不可）に設定されたとき、予め読み出し予約情報として追加セグメントに書き込まれたサブプロセッサＩＤ及びＬＳアドレスに読み出される。
【００４５】
複数のサブプロセッサによってデータを多段階に処理する必要がある場合、このように各メモリロケーションのデータの読み出し／書き込みを制御することによって、前段階の処理を行うサブプロセッサ２３が、処理済みのデータをメインメモリ２６上の所定のアドレスに書き込んだ後に即座に、後段階の処理を行う別のサブプロセッサ２３が前処理後のデータを読み出すことが可能となる。
【００４６】
図２（Ｂ）に示すように、各サブプロセッサ２３内のＬＳ２４も、複数のアドレスを指定できるメモリロケーションによって構成される。各メモリロケーションに対しては、同様に追加セグメントが割り振られる。追加セグメントは、ビジービットを含むものとされる。
【００４７】
サブプロセッサ２３がメインメモリ２６内のデータを自身のＬＳ２４のメモリロケーションに読み出すときには、対応するビジービットを１に設定して予約する。ビジービットが１であるメモリロケーションには、他のデータは格納することができない。ＬＳ２４のメモリロケーションに読み出し後、ビジービットは０になり、任意の目的に使用できるようになる。
【００４８】
図２（Ａ）に示すように、更に、各情報処理コントローラと接続されたメインメモリ２６には、複数のサンドボックスが含まれる。サンドボックスは、メインメモリ２６内の領域を画定するものであり、各サンドボックスは、各サブプロセッサ２３に割り当てられ、そのサブプロセッサが排他的に使用することができる。すなわち、各々のサブプロセッサ２３は、自身に割り当てられたサンドボックスを使用できるが、この領域を超えてデータのアクセスを行うことはできない。メインメモリ２６は、複数のメモリロケーションから構成されるが、サンドボックスは、これらのメモリロケーションの集合である。
【００４９】
更に、メインメモリ２６の排他的な制御を実現するために、図２（Ｃ）に示すようなキー管理テーブルが用いられる。キー管理テーブルは、情報処理コントローラ内のＳＲＡＭ等の比較的高速のメモリに格納され、ＤＭＡＣ２５と関連付けられる。キー管理テーブル内の各エントリには、サブプロセッサＩＤ、サブプロセッサキー及びキーマスクが含まれる。
【００５０】
サブプロセッサ２３がメインメモリ２６を使用する際のプロセスは、以下の通りである。まず、サブプロセッサ２３はＤＭＡＣ２５に、読み出しまたは書き込みのコマンドを出力する。このコマンドには、自身のサブプロセッサＩＤと、使用要求先であるメインメモリ２６のアドレスが含まれる。
【００５１】
ＤＭＡＣ２５は、このコマンドを実行する前に、キー管理テーブルを参照して、使用要求元のサブプロセッサのサブプロセッサキーを調べる。次に、ＤＭＡＣ２５は、調べた使用要求元のサブプロセッサキーと、使用要求先であるメインメモリ２６内の図２（Ａ）に示したメモリロケーションに割り振られたアクセスキーとを比較して、２つのキーが一致した場合にのみ、上記のコマンドを実行する。
【００５２】
図２（Ｃ）に示したキー管理テーブル上のキーマスクは、その任意のビットが１になることによって、そのキーマスクに関連付けられたサブプロセッサキーの対応するビットが０または１になることができる。例えば、サブプロセッサキーが１０１０であるとする。通常、このサブプロセッサキーによって１０１０のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが０００１に設定されている場合には、キーマスクのビットが１に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされ、このサブプロセッサキー１０１０によってアクセスキーが１０１０または１０１１のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
【００５３】
以上のようにして、メインメモリ２６のサンドボックスの排他性が実現される。すなわち、１つの情報処理コントローラ内の複数のサブプロセッサによってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段階の処理を行うサブプロセッサと、後段階の処理を行うサブプロセッサのみが、メインメモリ２６の所定アドレスにアクセスできるようになり、データを保護することができる。
【００５４】
例えば、以下のように使用することが考えられる。まず、情報処理装置の起動直後においては、キーマスクの値は全てゼロである。メインプロセッサ内のプログラムが実行され、サブプロセッサ内のプログラムと連携動作するものとする。第１のサブプロセッサにより出力された処理結果データを一旦メインメモリに格納し、第２のサブプロセッサに入力したいときには、該当するメインメモリ領域は、当然どちらのサブプロセッサからもアクセス可能である必要がある。そのような場合に、メインプロセッサ内のプログラムは、キーマスクの値を適切に変更し、複数のサブプロセッサからアクセスできるメインメモリ領域を設けることにより、サブプロセッサによる多段階的な処理を可能にする。
【００５５】
より具体的には、他の情報処理装置からのデータ→第１のサブプロセッサによる処理→第１のメインメモリ領域→第２のサブプロセッサによる処理→第２のメインメモリ領域、という手順で多段階処理が行われるときには、
第１のサブプロセッサのサブプロセッサキー：０１００、
第１のメインメモリ領域のアクセスキー    ：０１００、
第２のサブプロセッサのサブプロセッサキー：０１０１、
第２のメインメモリ領域のアクセスキー    ：０１０１
というような設定のままだと、第２のサブプロセッサは第１のメインメモリ領域にアクセスすることができない。そこで、第２のサブプロセッサのキーマスクを０００１にすることにより、第２のサブプロセッサによる第１のメインメモリ領域へのアクセスを可能にすることができる。
【００５６】
図１のネットワークシステムでは、情報処理装置１、２、３、４間での分散処理のために、情報処理装置１、２、３、４間でソフトウェアセルが伝送される。すなわち、ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１は、コマンド、プログラム及びデータを含むソフトウェアセルを生成し、ネットワーク９を介して他の情報処理装置に送信することによって、処理を分散することができる。
【００５７】
図３に、ソフトウェアセルの構成の一例を示す。この例のソフトウェアセルは、全体として、送信元ＩＤ、送信先ＩＤ、応答先ＩＤ、セルインターフェース、ＤＭＡコマンド、プログラム及びデータによって構成される。
【００５８】
送信元ＩＤには、ソフトウェアセルの送信元である情報処理装置のネットワークアドレス及び当該情報処理装置の情報処理装置ＩＤ、更に、その情報処理装置内の情報処理コントローラが備えるメインプロセッサ２１及び各サブプロセッサ２３の識別子（メインプロセッサＩＤ及びサブプロセッサＩＤ）が含まれる。
【００５９】
送信先ＩＤ及び応答先ＩＤには、それぞれ、ソフトウェアセルの送信先である情報処理装置、及びソフトウェアセルの実行結果の応答先である情報処理装置についての、同じ情報が含まれる。
【００６０】
セルインターフェースは、ソフトウェアセルの利用に必要な情報であり、グローバルＩＤ、必要なサブプロセッサの情報、サンドボックスサイズ及び前回のソフトウェアセルＩＤから構成される。
【００６１】
グローバルＩＤは、ネットワーク全体を通して当該ソフトウェアセルを一意的に識別できるものであり、送信元ＩＤ及びソフトウェアセルの作成または送信の日時（日付及び時刻）に基づいて作成される。
【００６２】
必要なサブプロセッサの情報は、当該ソフトウェアセルの実行に必要なサブプロセッサの数を設定する。サンドボックスサイズは、当該ソフトウェアセルの実行に必要なメインメモリ２６内及びサブプロセッサ２３のＬＳ２４内のメモリ量を設定する。前回のソフトウェアセルＩＤは、ストリーミングデータなどのシーケンシャルな実行を要求する１グループのソフトウェアセル内の、前回のソフトウェアセルの識別子である。
【００６３】
ソフトウェアセルの実行セクションは、ＤＭＡコマンド、プログラム及びデータから構成される。ＤＭＡコマンドには、プログラムの起動に必要な一連のＤＭＡコマンドが含まれ、プログラムには、サブプロセッサ２３によって実行されるサブプロセッサプログラムが含まれる。ここでのデータは、このサブプロセッサプログラムを含むプログラムによって処理されるデータである。
【００６４】
更に、ＤＭＡコマンドには、ロードコマンド、キックコマンド、機能プログラム実行コマンド、ステータス要求コマンド、及びステータス返信コマンドが含まれる。
【００６５】
ロードコマンドは、メインメモリ２６内の情報をサブプロセッサ２３内のＬＳ２４にロードするコマンドであり、ロードコマンド自体のほかに、メインメモリアドレス、サブプロセッサＩＤ及びＬＳアドレスを含む。メインメモリアドレスは、情報のロード元であるメインメモリ２６内の所定領域のアドレスを示す。サブプロセッサＩＤ及びＬＳアドレスは、情報のロード先であるサブプロセッサ２３の識別子及びＬＳ２４のアドレスを示す。
【００６６】
キックコマンドは、プログラムの実行を開始するコマンドであり、キックコマンド自体のほかに、サブプロセッサＩＤ及びプログラムカウンタを含む。サブプロセッサＩＤは、キック対象のサブプロセッサ２３を識別し、プログラムカウンタは、プログラム実行用プログラムカウンタのためのアドレスを与える。
【００６７】
機能プログラム実行コマンドは、後述のように、ある情報処理装置が他の情報処理装置に対して、機能プログラムの実行を要求するコマンドである。機能プログラム実行コマンドを受信した情報処理装置内の情報処理コントローラは、後述の機能プログラムＩＤによって、起動すべき機能プログラムを識別する。
【００６８】
ステータス要求コマンドは、送信先ＩＤで示される情報処理装置の現在の動作状態（状況）に関する装置情報を、応答先ＩＤで示される情報処理装置宛に送信要求するコマンドである。機能プログラムについては後述するが、図６に示す情報処理コントローラのメインメモリ２６が記憶するソフトウェアの構成図において機能プログラムにカテゴライズされるプログラムである。機能プログラムは、メインメモリ２６にロードされ、メインプロセッサ２１により実行される。
【００６９】
ステータス返信コマンドは、上記のステータス要求コマンドを受信した情報処理装置が、自身の装置情報を当該ステータス要求コマンドに含まれる応答先ＩＤで示される情報処理装置に応答するコマンドである。ステータス返信コマンドは、実行セクションのデータ領域に装置情報を格納する。
【００７０】
図４に、ＤＭＡコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す。
【００７１】
情報処理装置ＩＤは、情報処理コントローラを備える情報処理装置を識別するための識別子であり、ステータス返信コマンドを送信する情報処理装置のＩＤを示す。情報処理装置ＩＤは、電源投入時、その情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１によって、電源投入時の日時、情報処理装置のネットワークアドレス及び情報処理装置内の情報処理コントローラに含まれるサブプロセッサ２３の数などに基づいて生成される。
【００７２】
情報処理装置種別ＩＤには、当該情報処理装置の特徴を表す値が含まれる。情報処理装置の特徴とは、例えば、ハードディスクレコーダ、ＰＤＡ（Personal Digital Assistants）、ポータブルＣＤ（Compact Disc）プレーヤなどである。また、情報処理装置種別ＩＤは、映像音声記録、映像音声再生など、情報処理装置の機能を表すものであってもよい。情報処理装置の特徴や機能を表す値は予め決定されているものとし、情報処理装置種別ＩＤを読み出すことにより、当該情報処理装置の特徴や機能を把握することが可能である。
【００７３】
ＭＳ（マスター／スレーブ）ステータスは、後述のように情報処理装置がマスター装置またはスレーブ装置のいずれで動作しているかを表すもので、これが０に設定されている場合にはマスター装置として動作していることを示し、１に設定されている場合にはスレーブ装置として動作していることを示す。
【００７４】
メインプロセッサ動作周波数は、情報処理コントローラ内のメインプロセッサ２１の動作周波数を表す。メインプロセッサ使用率は、メインプロセッサ２１で現在動作している全てのプログラムについての、メインプロセッサ２１での使用率を表す。メインプロセッサ使用率は、対象メインプロセッサの全処理能力に対する使用中の処理能力の比率を表した値で、例えばプロセッサ処理能力評価のための単位であるＭＩＰＳを単位として算出され、または単位時間あたりのプロセッサ使用時間に基づいて算出される。後述のサブプロセッサ使用率についても同様である。
【００７５】
サブプロセッサ数は、当該の情報処理コントローラが備えるサブプロセッサ２３の数を表す。サブプロセッサＩＤは、当該の情報処理コントローラ内の各サブプロセッサ２３を識別するための識別子である。
【００７６】
サブプロセッサステータスは、各サブプロセッサ２３の状態を表すものであり、ｕｎｕｓｅｄ，ｒｅｓｅｒｖｅｄ，ｂｕｓｙなどの状態がある。ｕｎｕｓｅｄは、当該のサブプロセッサが現在使用されてなく、使用の予約もされていないことを示す。ｒｅｓｅｒｖｅｄは、現在は使用されていないが、予約されている状態を示す。ｂｕｓｙは、現在使用中であることを示す。
【００７７】
サブプロセッサ使用率は、当該のサブプロセッサで現在実行している、または当該のサブプロセッサに実行が予約されているプログラムについての、当該サブプロセッサでの使用率を表す。すなわち、サブプロセッサ使用率は、サブプロセッサステータスがｂｕｓｙである場合には、現在の使用率を示し、サブプロセッサステータスがｒｅｓｅｒｖｅｄである場合には、後に使用される予定の推定使用率を示す。
【００７８】
サブプロセッサＩＤ、サブプロセッサステータス及びサブプロセッサ使用率は、１つのサブプロセッサ２３に対して一組設定され、１つの情報処理コントローラ内のサブプロセッサ２３に対応する組数が設定される。
【００７９】
メインメモリ総容量及びメインメモリ使用量は、それぞれ、当該の情報処理コントローラに接続されているメインメモリ２６の総容量及び現在使用中の容量を表す。
【００８０】
外部記録部数は、当該の情報処理コントローラに接続されている外部記録部２８の数を表す。外部記録部ＩＤは、当該の情報処理コントローラに接続されている外部記録部２８を一意的に識別する情報である。外部記録部種別ＩＤは、当該の外部記録部の種類（例えば、ハードディスク、ＣＤ±ＲＷ、ＤＶＤ±ＲＷ、メモリディスク、ＳＲＡＭ、ＲＯＭなど）を表す。
【００８１】
外部記録部総容量及び外部記録部使用量は、それぞれ、外部記録部ＩＤによって識別される外部記録部２８の総容量及び現在使用中の容量を表す。
【００８２】
外部記録部ＩＤ、外部記録部種別ＩＤ、外部記録部総容量及び外部記録部使用量は、１つの外部記録部２８に対して一組設定されるものであり、当該の情報処理コントローラに接続されている外部記録部２８の数の組数だけ設定される。すなわち、１つの情報処理コントローラに複数の外部記録部が接続されている場合、各々の外部記録部には異なる外部記録部ＩＤが割り当てられ、外部記録部種別ＩＤ、外部記録部総容量及び外部記録部使用量も別々に管理される。
【００８３】
ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１は、以上のような構成のソフトウェアセルを生成し、ネットワーク９を介して他の情報処理装置及び当該装置内の情報処理コントローラに送信する。送信元の情報処理装置、送信先の情報処理装置、応答先の情報処理装置、及び各装置内の情報処理コントローラは、それぞれ、上記の送信元ＩＤ、送信先ＩＤ及び応答先ＩＤによって識別される。
【００８４】
ソフトウェアセルを受信した情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１は、そのソフトウェアセルをメインメモリ２６に格納する。更に、送信先のメインプロセッサ２１は、ソフトウェアセルを読み出し、それに含まれるＤＭＡコマンドを処理する。具体的には、送信先のメインプロセッサ２１は、まず、ロードコマンドを実行する。これによって、ロードコマンドで指示されたメインメモリアドレスから、ロードコマンドに含まれるサブプロセッサＩＤ及びＬＳアドレスで特定されるサブプロセッサ内のＬＳ２４の所定領域に、情報がロードされる。ここでロードされる情報は、受信したソフトウェアセルに含まれるサブプロセッサプログラムまたはデータ、あるいはその他の指示されたデータである。
【００８５】
次に、メインプロセッサ２１は、キックコマンドを、これに含まれるサブプロセッサＩＤで指示されたサブプロセッサに、同様にキックコマンドに含まれるプログラムカウンタと共に出力する。指示されたサブプロセッサは、そのキックコマンド及びプログラムカウンタに従って、サブプロセッサプログラムを実行する。そして、実行結果をメインメモリ２６に格納した後、実行を完了したことをメインプロセッサ２１に通知する。
【００８６】
なお、送信先の情報処理装置内の情報処理コントローラにおいてソフトウェアセルを実行するプロセッサはサブプロセッサ２３に限定されるものではなく、メインプロセッサ２１がソフトウェアセルに含まれる機能プログラムなどのメインメモリ用プログラムを実行するように指定することも可能である。
【００８７】
この場合には、送信元の情報処理装置は、送信先の情報処理装置宛に、サブプロセッサプログラムの代わりに、メインメモリ用プログラム及びそのメインメモリ用プログラムによって処理されるデータを含み、ＤＭＡコマンドがロードコマンドであるソフトウェアセルを送信し、メインメモリ２６にメインメモリ用プログラム及びそれによって処理されるデータを記憶させる。次に、送信元の情報処理装置は、送信先の情報処理装置宛に、送信先の情報処理装置内の情報処理コントローラについてのメインプロセッサＩＤ、メインメモリアドレス、メインメモリ用プログラムを識別するための後述の機能プログラムＩＤなどの識別子、及びプログラムカウンタを含み、ＤＭＡコマンドがキックコマンドまたは機能プログラム実行コマンドであるソフトウェアセルを送信して、メインプロセッサ２１に当該メインメモリ用プログラムを実行させる。
【００８８】
以上のように、この発明のネットワークシステムでは、送信元の情報処理装置は、サブプロセッサプログラムまたはメインメモリ用プログラムをソフトウェアセルによって送信先の情報処理装置に送信するとともに、当該サブプロセッサプログラムを送信先の情報処理装置内の情報処理コントローラに含まれるサブプロセッサ２３にロードさせ、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを送信先の情報処理装置に実行させることができる。
【００８９】
送信先の情報処理装置内の情報処理コントローラでは、受信したソフトウェアセルに含まれるプログラムがサブプロセッサプログラムである場合には、当該サブプロセッサプログラムを指定されたサブプロセッサにロードさせる。そして、ソフトウェアセルに含まれるサブプロセッサプログラムまたはメインメモリ用プログラムを実行させる。したがって、ユーザが送信先の情報処理装置を操作しなくても自動的に、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを送信先の情報処理装置内の情報処理コントローラに実行させることができる。
【００９０】
このようにして情報処理装置は、自装置内の情報処理コントローラがサブプロセッサプログラムまたは機能プログラムなどのメインメモリ用プログラムを有していない場合には、ネットワークに接続された他の情報処理装置からそれらを取得することができる。更に、各サブプロセッサ間ではＤＭＡ方式によりデータ転送を行い、また上述したサンドボックスを使用することによって、１つの情報処理コントローラ内でデータを多段階に処理する必要がある場合でも、高速かつ高セキュリティに処理を実行することができる。
【００９１】
ソフトウェアセルの使用による分散処理の結果、図５の上段に示すようにネットワーク９に接続されている複数の情報処理装置１、２、３、４は、図５の下段に示すように、仮想的な１台の情報処理装置７として動作する。ただし、そのためには、以下のような構成によって、以下のような処理が実行される必要がある。
【００９２】
図６に、個々の情報処理コントローラのメインメモリ２６が記憶するソフトウェアの構成を示す。これらのソフトウェア（プログラム）は、情報処理装置に電源が投入される前においては、当該の情報処理コントローラに接続される外部記録部２８に記録されているものである。各プログラムは、機能または特徴によって、制御プログラム、機能プログラム及びデバイスドライバにカテゴライズされる。
【００９３】
制御プログラムは、各情報処理コントローラが同じものを備え、各情報処理コントローラのメインプロセッサ２１が実行するもので、後述のＭＳ（マスター／スレーブ）マネージャ及び能力交換プログラムを含む。
【００９４】
機能プログラムは、メインプロセッサ２１が実行するもので、記録用、再生用、素材検索用など、情報処理コントローラごとに情報処理装置に応じたものが備えられる。
【００９５】
デバイスドライバは、情報処理コントローラ（情報処理装置）の入出力（送受信）用で、放送受信、モニタ出力、ビットストリーム入出力、ネットワーク入出力など、情報処理コントローラ毎に情報処理装置に応じたものが備えられる。
【００９６】
情報処理装置が物理的にネットワーク９に接続された状態で、情報処理装置に主電源が投入され、情報処理装置が電気的・機能的にもネットワーク９に接続されると、その情報処理装置の情報処理コントローラのメインプロセッサ２１は、制御プログラムに属する各プログラム、及びデバイスドライバに属する各プログラムを、メインメモリ２６にロードする。
【００９７】
ロード手順としては、メインプロセッサ２１は、まず、ＤＣ２７に読み出し命令を実行させることによって、外部記録部２８からプログラムを読み出し、次に、ＤＭＡＣ２５に書き込み命令を実行させることによって、そのプログラムをメインメモリ２６に書き込む。
【００９８】
機能プログラムに属する各プログラムについては、必要なときに必要なプログラムだけをロードするように構成してもよく、または、他のカテゴリに属するプログラムと同様に、主電源投入直後に各プログラムをロードするように構成してもよい。
【００９９】
ここで、機能プログラムに属する各プログラムは、ネットワークに接続された全ての情報処理装置の外部記録部２８に記録されている必要はなく、いずれか１つの情報処理装置の外部記録部２８に記録されていれば、前述の方法によって他の情報処理装置からロードすることができるので、結果的に図５の下段に示すように、仮想的な１台の情報処理装置７として機能プログラムを実行することができる。
【０１００】
ここで前述したようにメインプロセッサ２１によって処理される機能プログラムは、サブプロセッサ２３によって処理されるサブプロセッサプログラムと連携動作する場合がある。そこでメインプロセッサ２１が外部記録部２８から機能プログラムを読み出し、メインメモリ２６に書き込む際に対象となる機能プログラムと連携動作するサブプロセッサプログラムが存在する場合には、当該サブプロセッサプログラムも併せて同じメインメモリ２６に書き込むものとする。この場合、連携動作するサブプロセッサプログラムは１個である場合もあるし、複数個であることもあり得る。複数個である場合には、全ての連携動作するサブプロセッサプログラムをメインメモリ２６に書き込むことになる。メインメモリ２６に書き込まれたサブプロセッサプログラムはその後、サブプロセッサ２３内のＬＳ２４に書き込まれ、メインプロセッサ２１によって処理される機能プログラムと連携動作する。
【０１０１】
図３のソフトウェアセルに示したように、機能プログラムには、プログラムごとにプログラムを一意的に識別できる識別子が、機能プログラムＩＤとして割り当てられる。機能プログラムＩＤは、機能プログラムの作成の段階で、作成日時や情報処理装置ＩＤなどから決定される。
【０１０２】
そしてサブプロセッサプログラムにもサブプロセッサプログラムＩＤが割り当てられ、これによりサブプロセッサプログラムを一意的に識別可能である。割り当てられるサブプロセッサプログラムＩＤは、連携動作する相手となる機能プログラムの機能プログラムＩＤと関連性のある識別子、例えば機能プログラムＩＤを親番号とした上で最後尾に枝番号を付加させたもの等であることもあり得るし、連携動作する相手となる機能プログラムの機能プログラムＩＤとは関連性のない識別子であってもよい。いずれにしても機能プログラムとサブプロセッサプログラムが連携動作する場合には、両者とも相手の識別子であるプログラムＩＤを自プログラム内に互いに記憶しておく必要がある。機能プログラムが複数個のサブプロセッサプログラムと連携動作する場合にも、当該機能プログラムは複数個ある全てのサブプロセッサプログラムのサブプロセッサプログラムＩＤを記憶しておくことになる。
【０１０３】
メインプロセッサ２１は、自身が動作する情報処理装置の装置情報（動作状態に関する情報）を格納するための領域をメインメモリ２６に確保し、当該情報を自装置の装置情報テーブルとして記録する。ここでの装置情報は、図４に示した情報処理装置ＩＤ以下の各情報である。
【０１０４】
上述したネットワークシステムでは、ある情報処理装置への主電源投入時、その情報処理装置の情報処理コントローラのメインプロセッサ２１は、マスター／スレーブマネージャ（以下、ＭＳマネージャ）をメインメモリ２６にロードし、実行する。
【０１０５】
ＭＳマネージャは、自身が動作する情報処理装置がネットワーク９に接続されていることを検知すると、同じネットワーク９に接続されている他の情報処理装置の存在を確認する。ここでの「接続」または「存在」は、上述したように、情報処理装置が物理的にネットワーク９に接続されているだけでなく、電気的・機能的にもネットワーク９に接続されていることを示す。また、自身が動作する情報処理装置を自装置、他の情報処理装置を他装置と称する。当該装置も、当該情報処理装置を示すものとする。
【０１０６】
ＭＳマネージャが同じネットワーク９に接続されている他の情報処理装置の存在を確認する方法を以下に示す。
【０１０７】
ＭＳマネージャは、ＤＭＡコマンドがステータス要求コマンドであり、送信元ＩＤ及び応答先ＩＤが当該情報処理装置で、送信先ＩＤを特定しないソフトウェアセルを生成して、当該情報処理装置が接続されたネットワーク上に送信して、ネットワーク接続確認用のタイマーを設定する。タイマーのタイムアウト時間は、例えば１０分とされる。
【０１０８】
当該ネットワークシステム上に他の情報処理装置が接続されている場合、その他装置は、上記ステータス要求コマンドのソフトウェアセルを受信し、上記応答先ＩＤで特定されるステータス要求コマンドを発行した情報処理装置に対して、ＤＭＡコマンドがステータス返信コマンドであり、かつデータとして自身（その他装置）の装置情報を含むソフトウェアセルを送信する。このステータス返信コマンドのソフトウェアセルには、少なくとも当該他装置を特定する情報（情報処理装置ＩＤ、メインプロセッサに関する情報、サブプロセッサに関する情報など）及び当該他装置のＭＳステータスが含まれる。
【０１０９】
ステータス要求コマンドを発行した情報処理装置のＭＳマネージャは、上記ネットワーク接続確認用のタイマーがタイムアウトするまで、当該ネットワーク上の他装置から送信されるステータス返信コマンドのソフトウェアセルの受信を監視する。その結果、ＭＳステータス＝０（マスター装置）を示すステータス返信コマンドが受信された場合には、自装置の装置情報テーブルにおけるＭＳステータスを１に設定する。これによって、当該装置は、スレーブ装置となる。
【０１１０】
一方、上記ネットワーク接続確認用のタイマーがタイムアウトするまでの間にステータス返信コマンドが全く受信されなかった場合、またはＭＳステータス＝０（マスター装置）を示すステータス返信コマンドが受信されなかった場合には、自装置の装置情報テーブルにおけるＭＳステータスを０に設定する。これによって、当該装置は、マスター装置となる。
【０１１１】
すなわち、いずれの装置もネットワーク９に接続されていない状態、またはネットワーク９上にマスター装置が存在しない状態において、新たな情報処理装置がネットワーク９に接続されると、当該装置は自動的にマスター装置として設定される。一方、ネットワーク９上に既にマスター装置が存在する状態において、新たな情報処理装置がネットワーク９に接続されると、当該装置は自動的にスレーブ装置として設定される。
【０１１２】
マスター装置及びスレーブ装置のいずれについても、ＭＳマネージャは、定期的にステータス要求コマンドをネットワーク９上の他装置に送信してステータス情報を照会することにより、他装置の状況を監視する。その結果、ネットワーク９に接続されている情報処理装置の主電源が遮断され、またはネットワーク９から情報処理装置が切り離されることにより、予め判定用に設定された所定期間内に特定の他装置からステータス返信コマンドが返信されなかった場合や、ネットワーク９に新たな情報処理装置が接続された場合など、ネットワーク９の接続状態に変化があった場合には、その情報を後述の能力交換プログラムに通知する。
【０１１３】
メインプロセッサ２１は、ＭＳマネージャから、ネットワーク９上の他装置の照会及び自装置のＭＳステータスの設定完了の通知を受けると、能力交換プログラムを実行する。
【０１１４】
能力交換プログラムは、自装置がマスター装置である場合には、ネットワーク９に接続されている全ての他装置の装置情報、すなわち各スレーブ装置の装置情報を取得する。他装置の装置情報の取得は、上述したように、ＤＭＡコマンドがステータス要求コマンドであるソフトウェアセルを生成して他装置に送信し、その後、ＤＭＡコマンドがステータス返信コマンドで、かつデータとして他装置の装置情報を含むソフトウェアセルを他装置から受信することによって可能である。
【０１１５】
能力交換プログラムは、マスター装置である自装置の装置情報テーブルと同様に、ネットワーク９に接続されている全ての他装置（各スレーブ装置）の装置情報を格納するための領域を自装置のメインメモリ２６に確保し、これら情報を他装置（スレーブ装置）の装置情報テーブルとして記録する。すなわち、マスター装置のメインメモリ２６には、自装置を含むネットワーク９に接続されている全ての情報処理装置の装置情報が、装置情報テーブルとして記録される。
【０１１６】
一方、自装置がスレーブ装置である場合には、能力交換プログラムは、ネットワーク９に接続されている全ての他装置の装置情報、すなわちマスター装置及び自装置以外の各スレーブ装置の装置情報を取得し、これら装置情報に含まれる情報処理装置ＩＤ及びＭＳステータスを、自装置のメインメモリ２６に記録する。すなわち、スレーブ装置のメインメモリ２６には、自装置の装置情報が、装置情報テーブルとして記録されるとともに、自装置以外のネットワーク９に接続されているマスター装置及び各スレーブ装置についての情報処理装置ＩＤ及びＭＳステータスが、別の装置情報テーブルとして記録される。
【０１１７】
また、マスター装置及びスレーブ装置のいずれについても、能力交換プログラムは、上記のようにＭＳマネージャから、新たにネットワーク９に情報処理装置が接続されたことが通知されたときには、その情報処理装置の装置情報を取得し、上述したようにメインメモリ２６に記録する。
【０１１８】
なお、ＭＳマネージャ及び能力交換プログラムは、メインプロセッサ２１で実行されることに限らず、いずれかのサブプロセッサ２３で実行されてもよい。また、ＭＳマネージャ及び能力交換プログラムは、情報処理装置の主電源が投入されている間は常時動作する常駐プログラムであることが望ましい。
【０１１９】
マスター装置及びスレーブ装置のいずれについても、能力交換プログラムは、上記のようにＭＳマネージャから、ネットワーク９に接続されている情報処理装置の主電源が遮断され、またはネットワーク９から情報処理装置が切り離されたことが通知されたときには、その情報処理装置の装置情報テーブルを自装置のメインメモリ２６から削除する。
【０１２０】
更に、このようにネットワーク９から切断された情報処理装置がマスター装置である場合には、以下のような方法によって、新たにマスター装置が決定される。
【０１２１】
具体的には、例えば、ネットワーク９から切断されていない情報処理装置は、それぞれ、自装置及び他装置の情報処理装置ＩＤを数値に置き換えて、自装置の情報処理装置ＩＤを他装置の情報処理装置ＩＤと比較し、自装置の情報処理装置ＩＤがネットワーク９から切断されていない情報処理装置中で最小である場合、そのスレーブ装置は、マスター装置に移行して、ＭＳステータスを０に設定し、マスター装置として、上述したように、ネットワーク９に接続されている全ての他装置（各スレーブ装置）の装置情報を取得して、メインメモリ２６に記録する。
【０１２２】
図５の下段に示したようにネットワーク９に接続されている複数の情報処理装置１、２、３、４を仮想的な１台の情報処理装置７として動作させるためには、マスター装置がユーザの操作及びスレーブ装置の動作状態を把握する必要がある。
【０１２３】
図７に、４台の情報処理装置が仮想的な１台の情報処理装置７として動作する様子を示す。情報処理装置１がマスター装置、情報処理装置２、３、４がスレーブ装置Ａ、Ｂ、Ｃとして、動作しているものとする。
【０１２４】
ユーザがネットワーク９に接続されている情報処理装置を操作した場合、操作対象がマスター装置１であれば、その操作情報は、マスター装置１において直接把握され、操作対象がスレーブ装置であれば、その操作情報は、操作されたスレーブ装置からマスター装置１に送信される。すなわち、ユーザの操作対象がマスター装置１とスレーブ装置のいずれであるかにかかわらず、その操作情報は常にマスター装置１において把握される。操作情報の送信は、例えば、ＤＭＡコマンドが操作情報送信コマンドであるソフトウェアセルによって行われる。
【０１２５】
そして、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、その操作情報に従って、実行する機能プログラムを選択する。その際、必要であれば、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、上記の方法によって自装置の外部記録部２８−１、２８−２からメインメモリ２６−１に機能プログラムをロードするが、他の情報処理装置（スレーブ装置）がマスター装置１に機能プログラムを送信してもよい。
【０１２６】
機能プログラムには、その実行単位毎に必要となる、図４に示した各情報として表される情報処理装置種別ＩＤ、メインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件等の、装置に関する要求スペックが規定されている。
【０１２７】
マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、各機能プログラムについて必要となる上記要求スペックを読み出す。また、予め能力交換プログラムによってメインメモリ２６−１に記録された装置情報テーブルを参照し、各情報処理装置の装置情報を読み出す。ここでの装置情報は、図４に示した情報処理装置ＩＤ以下の各情報を示し、メインプロセッサ、サブプロセッサ、メインメモリ及び外部記録部に関する情報である。
【０１２８】
マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、ネットワーク９上に接続された各情報処理装置の上記装置情報と、機能プログラム実行に必要となる上記要求スペックとを順次比較する。
【０１２９】
そして、例えば、機能プログラムが録画機能を必要とする場合には、情報処理装置種別ＩＤに基づいて、録画機能を有する情報処理装置のみを特定して抽出する。更に、機能プログラムを実行するために必要なメインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件を確保できるスレーブ装置を、実行要求候補装置として特定する。ここで、複数の実行要求候補装置が特定された場合には、当該候補装置から１つの実行要求候補装置を特定して選択する。
【０１３０】
実行要求するスレーブ装置が特定されたら、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、その特定されたスレーブ装置について、自装置内の情報処理コントローラ１１に含まれるメインメモリ２６−１に記録されている当該スレーブ装置の装置情報テーブルを更新する。
【０１３１】
更に、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、ＤＭＡコマンドがロードコマンド及びキックコマンドであるソフトウェアセルを生成し、当該ソフトウェアセルのセルインターフェースに、機能プログラムに関する必要なサブプロセッサの情報及びサンドボックスサイズ（図３参照）を設定して、上記実行要求されるスレーブ装置に対して送信する。
【０１３２】
機能プログラムの実行を要求されたスレーブ装置は、その機能プログラムを実行するとともに、自装置の装置情報テーブルを更新する。その際、必要であれば、スレーブ装置内の情報処理コントローラに含まれるメインプロセッサ２１は、上記の方法によって自装置の外部記録部２８からメインメモリ２６に機能プログラムおよび当該機能プログラムと連携動作するサブプロセッサプログラムをロードする。
【０１３３】
機能プログラムの実行を要求されたスレーブ装置の外部記録部２８に、必要な機能プログラムまたは当該機能プログラムと連携動作するサブプロセッサプログラムが記録されていない場合には、他の情報処理装置が当該機能プログラムまたはサブプロセッサプログラムを、その機能プログラム実行要求先スレーブ装置に送信するように、システムを構成すればよい。
【０１３４】
サブプロセッサプログラムについては、前述のロードコマンドおよびキックコマンドを利用して他の情報処理装置に実行させることもできる。
【０１３５】
機能プログラムの実行終了後、機能プログラムを実行したスレーブ装置内の情報処理コントローラに含まれるメインプロセッサ２１は、終了通知をマスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１に送信するとともに、自装置の装置情報テーブルを更新する。マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、その終了通知を受信して、機能プログラムを実行したスレーブ装置の装置情報テーブルを更新する。
【０１３６】
マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、自装置及び他装置の装置情報テーブルの参照結果から、当該の機能プログラムを実行することができる情報処理装置として、自身を選択する場合もあり得る。その場合には、マスター装置１が当該機能プログラムを実行する。
【０１３７】
図７の例で、ユーザがスレーブ装置Ａ（情報処理装置２）を操作し、当該操作に応じた機能プログラムを別のスレーブ装置Ｂ（情報処理装置３）が実行する場合について、図８を用いてその分散処理の例を説明する。
【０１３８】
図８の例では、ユーザがスレーブ装置Ａを操作することによって、スレーブ装置Ａを含むネットワークシステム全体の分散処理が開始して、まず、スレーブ装置Ａは、ステップ８１で、その操作情報をマスター装置１に送信する。
【０１３９】
マスター装置１は、ステップ７２で、その操作情報を受信し、更にステップ７３に進んで、自装置のメインメモリ２６−１に記録されている自装置及び他装置の装置情報テーブルから、各情報処理装置の動作状態を調べて、受信した操作情報に応じた機能プログラムを実行することができる情報処理装置を選択する。この例は、スレーブ装置Ｂが選択される場合である。
【０１４０】
次に、マスター装置１は、ステップ７４で、その選択したスレーブ装置Ｂに対して機能プログラムの実行を要求する。
【０１４１】
スレーブ装置Ｂは、ステップ９５で、その実行要求を受信し、更にステップ９６に進んで、実行要求された機能プログラムを実行する。
【０１４２】
以上のように、ユーザは、１台の情報処理装置のみを操作することによって、他の情報処理装置を操作することなく、複数の情報処理装置１、２、３、４を仮想的な１台の情報処理装置７として動作させることができる。
【０１４３】
次に、以上のようなネットワークシステムを前提に、本発明の実施の形態について説明する。
【０１４４】
図９は、本発明の一実施の形態に係るデータ通信システムの構成を示すブロック図である。データ通信システム３００は、例えばデータ送信装置１００とデータ受信装置２００とがネットワーク５０を介して接続されている。ネットワーク５０は、例えばインターネットまたはＬＡＮ（Local Area Network）等で構成される。以下、データ送信装置及びデータ受信装置を、それぞれ単に送信装置及び受信装置という。
【０１４５】
例えば、送信装置１００及び受信装置２００は、それぞれ上記情報処理装置１等の機能を少なくとも備え、ネットワーク５０を介して互いに接続されている。送信装置１００は、エンコーダ３９で符号化されたデータをネットワーク５０を介して受信装置２００に提供する。受信装置２００は、受信したデータをデコーダ５９に送り、デコーダ５９はそのデータを復号化する。このデータ通信システム３００は、例えば遠隔テレビ会議、インターネット電話、ビデオストリーム配信、ディジタル放送等のシステムを実現するものである。具体的には、本システムがビデオストリーム配信等のシステムであれば、送信装置１００は、例えばビデオストリームの配信装置であり、受信装置２００は、ユーザが利用する受信端末装置である。あるいは、ネットワーク５０が例えば家庭内のＬＡＮである場合には、送信装置１００がＷＡＮ（Wide Area Network）に接続されたホームサーバであり、受信装置２００がそのホームサーバから動画や音声等の提供を受ける端末装置である。エンコーダ３９及びデコーダ５９は、それぞれ例えばＭＰＥＧ（Moving Picture Experts Group）による圧縮処理及び伸長処理によって、データを符号化及び復号化する。
【０１４６】
送信装置１００は、システム制御部３１、ＲＴＰパケット生成部３２、パケット解析部３３、ネットワーク監視部３４、ＲＴＣＰパケット生成部３５、時刻生成部３６、ＲＴＰ出力ポート３７、ＲＴＣＰポート３８、ＴＣＰ（Transmission Control Protocol）ポート４０を有する。エンコーダ３９は、例えばビデオカメラ等に含まれる機能であるが、送信装置１００がエンコーダ３９の機能を持つようにしてももちろんかまわない。
【０１４７】
ここで、「パケット」とは、上述した「ソフトウェアセル」（図３参照）と同じ概念であり、以下、「パケット」を「ソフトウェアセル」と置き換えて読んでもかまわない。
【０１４８】
システム制御部３１は、送信装置１００を全体的に統括して制御し、例えば上記メインプロセッサ２１やサブプロセッサ２３を含む。
【０１４９】
ＲＴＰパケット生成部３２は、映像や音声等のメディアデータをペイロードとした、ＲＴＰに従うメディアパケットを生成する。つまり、ペイロードデータに対して、ＲＴＰヘッダを付加しパケット化する。ＲＴＰパケット生成部３２で生成されるメディアパケットは、複数の連続性を持つパケットである。本実施の形態では、このような連続性を持つメディアパケットを用いてネットワーク５０でのデータの伝送遅延を計測しようとするものである。ＲＴＰパケット生成部３２は、さらに、後述する所定の条件の下、ダミーパケットを生成する。これにより、送信装置１００がこのダミーパケットを含めてメディアパケットを送信するときの時間的な送信間隔が一定に補償される。
【０１５０】
ＲＴＣＰパケット生成部３５は、例えば、後述する所定の条件の下で、データ受信装置２００にネットワーク５０でのデータ伝送遅延を計測させるためのＲＴＣＰに従うEchoパケットを生成する。ＲＴＣＰパケット生成部３５は、他にも、例えばＥＯＳ（End Of Stream）メッセージを持つＲＴＣＰパケットを生成し、そのパケットを受信装置２００へ送ることで、データストリームの終了を明示する。
【０１５１】
パケット解析部３３は、パケットの種別や、パケットに含まれるデータの解析を行う。
【０１５２】
時刻生成部３６は、システム制御部３１の基準クロックを生成し、生成されたクロックを基にＲＴＰパケット生成部３２及びＲＴＣＰパケット生成部３５にタイムスタンプを与える。
【０１５３】
ＴＣＰポート４０は、ネットワーク５０を介してＴＣＰに従った通信を行うための入出力ポートである。
【０１５４】
ネットワーク監視部３４は、例えば、ネットワーク５０の負荷状況や遅延状況を取得したり、ＴＣＰポート４０を介して、少なくとも受信装置２００の装置負荷の情報や、装置１００及び２００の間でやり取りされるパケット中のデータ形式の情報が含まれたステータス情報を取得等する。
【０１５５】
上記ＲＴＰパケットの構成を図１０に示す。ＲＴＰヘッダには、バージョン番号（ｖ）、パディング（Ｐ）、拡張ヘッダ（Ｘ）の有無、送信元数（Counter）、マーカ情報（marker bit）、ペイロードタイプ（Payload type）、シーケンス番号、タイムスタンプ、同期ソース（送信元）識別子（ＳＳＲＣ）及び貢献ソース（送信元）識別子（ＣＳＲＣ）の各フィールドが設けられている。ソフトウェアセルの場合、シーケンス番号が図３に示すソフトウェアセルのＩＤ（グローバルＩＤ）となる。データ受信側において、ＲＴＰヘッダに付与されたタイムスタンプによりＲＴＰパケットの展開時に処理時間の制御が実行され、リアルタイム画像、または音声の再生制御が可能となる。例えば動画像データの符号化データを格納したＲＴＰパケットにおいては、１つの画像フレームに属する複数のＲＴＰパケットに共通のタイムスタンプが設定され、各フレームを構成する終端パケットには、終端であることを示す識別フラグがＲＴＰヘッダに格納される。ＲＴＰヘッダを付加されたパケットは、さらにＩＰ（Internet Protocol）ヘッダが付与されてネットワーク５０上で通信される。この場合、例えば、このようなＩＰヘッダが付加されたパケットが上述のソフトウェアセルとなる。
【０１５６】
受信装置２００は、ＲＴＰ入力ポート５１、パケット解析部５２、パケット処理部５３、ＲＴＣＰポート５４、ネットワーク監視部５５、遅延計測部５６、データベース５７、システム制御部５８、ＴＣＰポート６０を有する。デコーダ５９は、例えばディジタルテレビ等に含まれる機能であるが、受信装置２００がデコーダ５９の機能を持つようにしてももちろんかまわない。
【０１５７】
システム制御部５８は、受信装置２００を全体的に統括して制御し、例えば上記メインプロセッサ２１やサブプロセッサ２３を含む。
【０１５８】
パケット解析部５２は、ＲＴＰ入力ポートから入力されるＲＴＰパケット（例えばメディアパケット）を解析し、また、ＲＴＣＰポート５４で入出力されるＲＴＣＰパケットを解析する。具体的には、パケットの種別等、パケットに含まれるデータの解析を行う。
【０１５９】
パケット処理部５３は、ＲＴＣＰに従う遅延計測用のEchoパケットやEcho-Replyパケットを生成する。また、パケット処理部５３は、パケット解析部５２により送信装置１００からのメディアパケットのロスまたはエラーが検出された場合に、そのロスまたはエラーとなったパケット再送要求を実行するか否かを判断する。パケット再送要求を実行する場合、パケット処理部５３は、パケット解析部５２で検出されたロストパケットの再送を、送信装置１００に実行させるためのデータを格納した再送要求パケットを生成する。パケット処理部５３は、他にも、ある連続する所定数のパケットを無事受信したときの受信確認応答パケットを生成したりする。
【０１６０】
ネットワーク監視部５５は、例えば、ネットワーク５０の負荷状況や遅延状況を取得したり、ＴＣＰポート６０を介して送信装置１００にステータス情報を送信等する。
【０１６１】
遅延計測部５６は、ＲＴＰパケットまたはＲＴＣＰパケットに基づき、ネットワーク５０でのデータの往復遅延（ＲＴＴ）及び片道遅延を計測し、データベース５７に計測したデータを保存する。データベース５７は、例えば図１に示すメインメモリ２６−１、２６−２、２６−３、２６−４、外部記憶部２８−１、２８−２、２８−３、２８−４、２８−５、２８−６等に相当する。
【０１６２】
図１５はEchoパケットの構成を示し、図１６はEcho-Replyパケットの構成を示している。Echoパケットは、図１５に示すようにヘッダ（ＨＥＡＤ）、フォーマット（ＦＯＲＭＡＴ）、パケットタイプ、パケット長、送信同期ソース識別子（ＲＴＣＰ）、およびEchoパケットの識別データとしてのＥＣＨＯ−ＩＤが格納される。Echo-Replyパケットは、図１６に示すようにヘッダ（ＨＥＡＤ）、フォーマット（ＦＯＲＭＡＴ）、パケットタイプ、パケット長、送信同期ソース識別子（ＲＴＣＰ）、およびＥＣＨＯ−ＲＴＣＰパケットに対応するＥＣＨＯ−ＩＤ及び機器処理時間（後述する機器遅延）が格納される。ＥＣＨＯ−ＩＤをEchoパケットとEcho-Replyパケットに入れることにより、送信装置１００がEcho-Replyパケットを受け取った際に、いつ送信したEchoパケットに対応する返事（Echo-Reply）かを識別することが可能となる。
【０１６３】
以上説明した送信装置１００及び受信装置２００は、互いに相手方の機能をすべて含むようにしてもよい。具体的には、例えば、送信装置１００のＲＴＰ出力ポート３７は出力のみ、受信装置２００のＲＴＰ入力ポート５１は入力のみとしたが、両者とも入出力を行えるようにしてもよい。
【０１６４】
以上のように構成されたデータ通信システム３００の動作について説明する。図１１〜図１４はその動作を示すフローチャートである。
【０１６５】
図１１は、送信装置１００の動作を示すフローチャートである。送信装置１００は、上述した能力交換プログラムを用いてネットワークに接続された受信装置２００のステータス情報を取得する（ステップ１０１）。具体的には、送信装置１００は、応答先ＩＤ（図３参照）である送信機器１００の機器ＩＤ及び送信先ＩＤである受信装置２００の機器ＩＤを含むステータス要求コマンドのＴＣＰパケットを生成し、受信装置２００に送信して実行させる。ステータス要求コマンドのＴＣＰパケットを受信した受信装置２００はステータス返信コマンドのＴＣＰパケットを生成して、自己のステータス情報を送信装置１００に送信する。
【０１６６】
また、逆に、受信装置２００がステータス要求コマンドを発行し、これに応じて送信装置１００は、自己のステータ情報を受信装置２００に送信する場合もある。
【０１６７】
図１７は、当該ステータス返信コマンドのパケットのデータ領域の構造を示す。送信装置１００は、本実施の形態では、ステータ情報中のメインプロセッサ使用率、サブプロセッサ数、サブプロセッサ使用率、メインメモリまたは外部記録部の総容量、メインメモリまたは外部記録部の使用量、パケットロス率、データの形式等の要素を重要なデータとして取り扱う。
【０１６８】
パケットロス率とは、送信装置１００から送信される、例えば連続するメディアパケットの数のうち、ネットワーク５０の混雑等が原因でネットワーク５０上で損失したパケット数の割合である。このパケットロス率については、送信装置１００は生成せず、受信装置２００のみが生成するデータであってもよい。
【０１６９】
データの形式とは、送信装置１００と受信装置２００との間でやり取りする様々なデータの形式であり、そのうちの１つが、例えばメディアパケットに含まれるデータのコーデック情報である。コーデックの種類によっては、送信装置１００が送信する、当該メディアパケットの送信間隔情報（送信間隔に関するデータ）が規格化されているものもある。例えば、音声データのパケットであれば、例えばコーデックの種類にもよるが、例えば３０ｍｓの一定間隔で送信される。
【０１７０】
このように、送信装置１００及び受信装置２００がステータス情報を交換し合う。各装置１００及び２００は、それぞれステータス情報を所定の時間間隔ごとに取得して保存し、または、取得した後更新する。
【０１７１】
送信装置１００は、受信装置２００との間でパケットのやり取りがあるかどうかを判断する。具体的には、例えばネットワーク監視部３４が、ＲＴＰ出力ポート３７、ＲＴＣＰポート３８またはＴＣＰポート４０を介して何らかのパケットを送受信しているか否かを監視する（ステップ１０２）。何らかのパケットが送受信されている場合、送信装置１００が送信するパケットの監視を開始する（ステップ１０３）。
【０１７２】
そしてネットワーク監視部３４またはパケット解析部３３は、そのパケットが連続性を持つパケットであるか否かを検出する（ステップ１０４）。例えばＲＴＰポートからメディアパケットが送出されている場合、そのパケットのヘッダのうち例えばシーケンス番号を検出することで連続性を持つパケットであることを確認することができる。あるいは、パケット中のペイロードデータの種別によって判別することも可能である。このことは、ＴＣＰポート４０またはＲＴＣＰポート３８から送出されるパケットも同様である。
【０１７３】
ネットワーク監視部３４またはパケット解析部３３は、送信されているパケットが連続性を持つデータである場合、そのパケットの送信間隔が規定されているか否かを検出する（ステップ１０５）。上記したように、予め送信間隔が規格化されている場合、すなわち規定されている場合には、そのまま当該パケットの送信を続行する（ステップ１０６）。
【０１７４】
図１２は、受信装置２００の動作を示すフローチャートである。受信装置２００は、最初、送信装置１００からＲＴＰ入力ポート５１、ＲＴＣＰポート５４またはＴＣＰポート６０を介しての何らかのパケットの受信待ち状態にある（ステップ２０１）。受信装置２００が、送信装置１００のステータス情報を既に取得している場合に（ステップ２０２のＹＥＳ）、何らかのパケットを受信した場合は（ステップ２０３のＹＥＳ）、次のステップへ進む。ステータス情報を取得しているか否かは、例えば現時点から過去にさかのぼる所定の時間内に取得しているか否か等により判断すればよい。
【０１７５】
受信装置２００がパケットを受信した場合、ネットワーク監視部５５またはパケット解析部５２は、受信したパケットが連続性を持つパケットであるか否かを検出する（ステップ２０４）。受信したパケットが連続性を持つデータである場合、ネットワーク監視部５５またはパケット解析部５２は、そのパケットの送信間隔が規定されているか否かを検出する（ステップ２０５）。送信間隔が規定されていれば、遅延計測部５６がこの送信間隔のデータを用いて遅延を計測する（ステップ２０６）。具体的には、遅延計測部５６は、例えば次のような計測式を用いて計測する。  
片道遅延＝（受信装置のパケットの受信間隔）−（送信装置のパケットの送信間隔）・・・式（Ａ）
この計測式（Ａ）により、受信装置２００がパケットを受信するときのジッタを片道遅延として利用することが可能となる。
【０１７６】
より具体的には、例えばやり取りされるパケットが音声データのメディアパケットである場合、予め規定された音声パケットの送信間隔を３０ｍｓとし、ある２つのパケットを受信装置２００が受信したときの受信間隔が４０ｍｓであったとすると、片道遅延はその差の１０ｍｓである。受信装置２００は、例えばネットワーク監視部５５によりパケットごとに受信時刻を監視しているため、受信間隔を取得することができる。
【０１７７】
そして、受信装置２００は、以上のように計測された片道遅延をデータベース５７に保存する（ステップ２０７）。また、片道遅延は１回のみの計測ではなく、所定の回数片道遅延を計測し、片道遅延の平均値を算出してもよい。また、この場合に、算出された平均値をデータベース５７に保存したり、あるいは更新したりすることができる。
【０１７８】
本実施の形態では、主のデータとして普通に送受信を行うメディアパケットを利用することで遅延計測のみために例えばＲＴＣＰパケット等を用いる必要がなくなる。これにより、またはネットワークの負荷を軽減することができる。
【０１７９】
また、受信間隔及び送信間隔に関するデータを用いることにより、片道の伝送遅延を計測することができ、従来のＲＴＴに比べ高精度に遅延計測することができる。このように片道遅延を計測できることより、ネットワークの帯域や負荷が片道ごとに異なる場合は、同期制御等に有効である。例えば、同期制御の１つであるビデオとオーディオとの同期制御において、遅延が装置の方向ごとに異なる場合は、その方向に応じて効果的な制御をすることができる。
【０１８０】
図１１に示す送信装置１００のフローの説明に戻る。
【０１８１】
ステップ１０２において装置間でパケットのやり取りがなければ、ステップ１０１で取得したステータス情報に基づいて（ステップ１０７）、それ以降の処理を実行する。具体的には、ステータス情報中、例えばメインプロセッサ使用率、サブプロセッサ使用率、メインメモリ使用量等のデータを用いて、その使用率または使用量がある閾値以下である場合は、ＲＴＣＰパケット生成部３５が遅延計測のためにＲＴＣＰのEchoパケットを生成する。そして、送信装置１００は、ネットワーク監視部３４の監視の下、Echoパケットを受信装置２００に送出する（ステップ１０８）。ＲＴＣＰパケットによる遅延計測については後に詳述する。
【０１８２】
一方、当該使用率または使用量が閾値を超えている場合（ステップ１０７のＮＯ）は、受信装置２００の負荷をこれ以上増やさないようにするために、遅延計測を行わない。すなわち、送信装置１００は何らのパケットも送出しない。
【０１８３】
ステップ１０４において、送信しているパケットが連続性を持つパケットではない場合も、送信装置１００はステップ１０７及び１０８を実行する。すなわち、やり取りされているパケットが連続性を持つパケットでない場合であって、かつ、受信装置２００の負荷が大きい場合は、何らの遅延計測用のパケットを送出しないので、受信装置２００の負荷がこれ以上増えることを阻止することができる。
【０１８４】
ステップ１０５において、送信しているパケットの送信間隔が規定されておらず一定でない場合は、ステップ１０１で取得したステータス情報に基づいて（ステップ１０９）、それ以降の処理を実行する。具体的には、ステータス情報中、例えばメインプロセッサ使用率、サブプロセッサ使用率、メインメモリ使用量等のデータを用いて、その使用率または使用量が所定値以下である場合は、遅延計測のためにダミーパケットを生成する。そして、送信装置１００は、ネットワーク監視部３４の監視の下、ダミーパケットを現在送信されているメディアパケットを含めて送信間隔を一定とするために、当該メディアパケットにダミーパケットを挿入する（ステップ１１０）。
【０１８５】
図１８はダミーパケットを挿入して送信するときのイメージ図である。Ａは、連続性を持つ送信間隔が一定のパケットＭを送信する場合で、送信装置１００（送信側）から例えば各パケットＭが３０ｍｓ間隔で送信されている場合を示す。ところが、Ｂに示すように、送信間隔が一定でない場合、各パケットＮに、１つまたは複数のダミーパケットＤを挿入して送信間隔を例えば２５ｍｓと一定にして送信する。これにより、送信間隔を一定に保つことができる。
【０１８６】
図１２に示す受信装置２００のフローの説明に戻る。
【０１８７】
受信装置２００は、ステップ２０２において送信装置１００からステータス情報を取得してない場合、送信装置１００から次にどのような種別のパケットが送られてくるのか判断できないので、ＲＴＣＰパケットにより遅延を計測する。したがって、送信装置１００からのＲＴＣＰEchoパケットを受信した場合（ステップ２０８のＹＥＳ）、これを用いて遅延を計測する（ステップ２０９）。ＲＴＣＰEchoパケットを受信しない場合（ステップ２０８のＮＯ）、何もしない。ＲＴＣＰによる遅延計測については後に詳述する。
【０１８８】
ステップ２０４において、送信しているパケットが連続性を持つパケットではない場合も、受信装置２００は、送信装置１００から次にどのような種別のパケットが送られてくるのか判断できないので、ＲＴＣＰパケットにより遅延を計測する。したがって、ＲＴＣＰEchoパケットを受信した場合（ステップ２０８のＹＥＳ）、これを用いて遅延を計測する（ステップ２０９）。ＲＴＣＰEchoパケットを受信しない場合（ステップ２０８のＮＯ）、何もしない。
【０１８９】
一方、ステップ２０５において、受信しているパケットの送信間隔が規定されていなが、ダミーパケットが挿入されている場合は（ステップ２１０のＹＥＳ）、一定の送信間隔で送信されるメディアパケット及びダミーパケットの各パケットを利用して、式（Ａ）により遅延を計測することができる（ステップ２０６）。ダミーパケットが挿入されていない場合は（ステップ２１０のＮＯ）、遅延を計測することができない。しかし、ダミーパケットを挿入しない目的は上記したように受信装置２００の負荷が大きい場合であり、受信装置２００の負荷がこれ以上増えることを阻止することができる。
【０１９０】
次に、ＲＴＣＰパケットによる遅延を計測する動作について説明する。
【０１９１】
図１３は、図１１に示すステップ１０７のＹＥＳ以降の処理フローであって、送信装置１００がＲＴＣＰEchoパケットを送信するまでの動作を示すフローチャートである。送信装置１００は、まずEchoパケットの送信間隔を設定する（ステップ３０１）。この送信間隔としては、例えば同期等に関連するビデオのフレーム単位である３３ｍｓ等に設定することができる。送信間隔は、受信装置２００の負荷状況やネットワーク５０の負荷状況に応じて変更可能である。
【０１９２】
送信間隔の設定を終えると、受信装置２００は、タイマー管理（ステップ３０２）により所定の時間ごとにパケット処理部５３でEchoパケットを生成する。そして、生成したEchoパケットにタイムスタンプが含まれる所定のＲＴＣＰヘッダ及びＩＰヘッダを付し、当該Echoパケットを、ＲＴＣＰポート５４を介して送信装置１００に設定した一定の間隔で送信する（ステップ３０３）。このとき、送信装置１００は、送信したパケットごとのＩＤ（ＥＣＨＯ−ＩＤ）及び送信時刻を図示しないメモリに保存する。
【０１９３】
図１４は、図１２に示すステップ２０８のＹＥＳ以降の処理フローであって、受信装置２００がＲＴＣＰEcho-Replyパケットを送信する場合等の動作を示すフローチャートである。受信装置２００は、Echoパケットを受信した場合（ステップ４０１のＹＥＳ）、EchoパケットごとのＥＣＨＯ−ＩＤ及び受信時刻を保存しておき、片道遅延を計測する（ステップ４０２）。具体的には、遅延計測部５６は、例えば次のような計測式を用いて計測する。
【０１９４】
片道遅延＝（受信装置のEchoパケットの受信間隔）−（送信装置のEchoパケットの送信間隔）・・・式（Ｂ）
受信装置２００は、送信装置１００のEchoパケットの送信間隔を上記したようにステータス情報から知ることが可能である。また、受信装置２００は、例えばネットワーク監視部５５によりEchoパケットごと（ＥＣＨＯ−ＩＤごと）に受信時刻を監視しているため、Echoパケットの受信間隔を取得することができる。
【０１９５】
次に、受信装置２００は、パケット処理部５３によりEcho-Replyパケットを生成し、送信装置１００に当該Echo-Replyパケットを送信する（ステップ４０３）。その後、受信装置２００は、計測した式（Ｂ）により得られた片道遅延をデータベース５７に保存する（ステップ４０４）。また、片道遅延は１回のみの計測ではなく、所定の回数片道遅延を計測し、片道遅延の平均値を算出してもよい。また、この場合に、算出された平均値をデータベース５７に保存したり、あるいは更新したりすることができる。
【０１９６】
そして、受信装置２００から送信されたEcho-Replyパケットを受信した送信装置１００は、例えば以下の計測式を用いて計測する。
【０１９７】
ＲＴＴ＝（Echo-Replyパケットの受信時刻）−（Echoパケットの送信時刻）−（機器遅延）・・・式（Ｃ）
ここで機器遅延は、受信装置２００の処理にかかる時間であり、以下の式で表せる。  
機器遅延＝（受信装置のEchoパケットの受信時刻）−（受信装置のEcho-Replyパケットの送信時刻）・・・式（Ｄ）
【０１９８】
一方、ステップ４０１において、受信装置２００は、Echoパケットを受信してないが、Echo-Replyパケットを受信した場合は（ステップ４０５のＹＥＳ）、往復遅延（ＲＴＴ）を計測する（ステップ４０６）。この場合の計測式は上記式（Ｃ）と同じになり、この場合の機器遅延は送信装置１００の処理にかかる時間となる。また、この場合は、先に受信装置２００がEchoパケットを送信装置１００に送信していることが条件となる。
【０１９９】
以上のように、受信装置２００は片道遅延を計測することが可能となる。また、もちろんＲＴＴも計測することも可能である。
【０２００】
図１９は、送信装置１００の他の実施の形態に係る処理を示すフローチャートである。図１９において、図１１に示すフローと同様の動作については、その説明を簡略または省略し、異なる点を中心に説明する。
【０２０１】
図１９に示すように、送信装置１００のシステム制御部３１は、ステップ５０２において装置間でパケットのやり取りがない場合、または、ステップ５０４において連続性がないパケットである場合、パケットのロス率が閾値以下であるか否かを判断する（ステップ５０７）。
【０２０２】
パケットのロス率は、例えば所定の時間間隔ごとに受信装置２００から送信されてくるデータであり、ネットワーク５０上の帯域の負荷を知るための一要素となる。受信装置２００は、各種パケットの送受信に関するデータベースからパケットロス率を算出することができる。具体的には、受信装置２００は、送信装置１００から送信されてくる各種パケットのうち、例えば一定の時間間隔でロストパケットを検出し、ロストパケットをデータベース化していくことによりパケットロス率を算出することができる。受信装置２００がロストパケットを検出する本来の目的は、ある所定の時間内にロストパケットの再送要求を行い、受信側でのリアルタイム再生を高品質で行うためである。
【０２０３】
なお、受信装置２００は、所定の時間間隔ごとに受信装置２００から送信されてくるパケットロス率のデータのうち最も新しいものを基準としてステップ５０７を実行すればよい。
【０２０４】
パケットロス率が閾値以下である場合、送信装置１００はネットワーク５０の帯域に余裕があるものとみなし、Echoパケットを生成して受信装置２００に一定間隔で送信する（ステップ５０８）。図１２に示すように、受信装置２００は、ステップ２０８において受信したEchoパケットを利用して式（Ｂ）により片道遅延を計測する（ステップ２０９）。ネットワークの負荷が大きい場合、すなわち、パケットロス率が閾値を越える場合は（ステップ５０７のＮＯ）、送信装置１００は何もしない。これにより、ネットワークの負荷がこれ以上増大することを阻止することができる。
【０２０５】
図１９に戻り、ステップ５０５においてパケットの送信間隔が規定されていない場合も、送信装置１００はネットワークの負荷状況を知るために、受信装置２００からパケットロス率を確認する（ステップ５０９）。ロス率が閾値以下であれば、送信装置１００はネットワーク５０の帯域に余裕があるものとみなし、上述の実施の形態と同様に、送信間隔が一定となるようにダミーパケットを挿入して（ステップ５１０）、各パケットを送信する（ステップ５０６）。
【０２０６】
図１２に示すように、受信装置２００は、において受信したダミーパケットを受信した場合は（ステップ２１０）、一定の送信間隔で送信されるメディアパケット及びダミーパケットの各パケットを利用して、式（Ａ）により遅延を計測することができる（ステップ２０６）。ダミーパケットが挿入されていない場合は（ステップ２１０のＮＯ）、遅延を計測することができない。しかし、ダミーパケットを挿入しない目的は、ネットワークの負荷が大きい場合であり、ネットワークの負荷がこれ以上増大することを阻止することができる。
【０２０７】
本発明は以上説明した実施の形態には限定されるものではなく、種々の変形が可能である。
【０２０８】
例えば受信装置２００は、例えば式（Ａ）により複数回の遅延計測により算出した遅延の平均値を、自己のステータス情報としてデータベース５７に保存しておくことも可能である。また、上記各実施の形態では、受信装置２００は、例えば式（Ａ）による計測ができない場合、所定の条件下でＲＴＣＰパケットを用いて遅延計測を行うようにした。しかし、例えば式（Ｃ）により複数回のＲＴＴを計測してデータベース化し、その平均値を１／２したものを平均の片道遅延とすることもできる。
【０２０９】
例えば、送信装置１００は、ＲＴＰパケット生成部３２がＲＴＰパケットを生成する段階で、送信間隔に関するデータを当該ＲＴＰパケットに含ませるようにしてもよい。この場合、受信装置２００は、パケット解析部５２により当該ＲＴＰパケットを解析して送信間隔に関するデータを把握することができるので、ステータス情報（図１７参照）に示すデータ形式等の項目は必要ない。
【０２１０】
上記各実施の形態における送信装置１００では、パケットの種類によって送信間隔が規定されていないパケットについては、図１１等のステップ１０９以降の処理を行うようにした。しかし、送信間隔が規定されていないパケットであっても、送信装置１００に当該パケットを一定間隔に送信できる手段が設けられていてもよい。例えば、送信装置１００は、送信間隔を一定にするためのバッファを有していればよい。つまり、各パケットを当該バッファに保持してから送信間隔を一定にしてバッファから抽出して送信すればよい。
【図面の簡単な説明】
【０２１１】
【図１】本発明において前提となるネットワークシステムの一例を示す図である。
【図２】情報処理装置が備える情報処理コントローラの説明に供する図である。
【図３】ソフトウェアセルの一例を示す図である。
【図４】ＤＭＡコマンドがステータス返信コマンドである場合のソフトウェアセルのデータ領域を示す図である。
【図５】複数の情報処理装置が仮想的な１台の情報処理装置として動作する様子を示す図である。
【図６】情報処理コントローラのソフトウェア構成の一例を示す図である。
【図７】４台の情報処理装置が仮想的な１台の情報処理装置として動作する様子を示す図である。
【図８】図７のシステムにおける分散処理の例を示す図である。
【図９】本発明の一実施の形態に係るデータ通信システムの構成を示すブロック図である。
【図１０】ＲＴＰパケットの構成図である。
【図１１】送信装置の動作を示すフローチャートである。
【図１２】受信装置の動作を示すフローチャートである。
【図１３】送信装置がＲＴＣＰEchoパケットを送信するまでの動作を示すフローチャートである。
【図１４】受信装置がＲＴＣＰEcho-Replyパケットを送信する場合等の動作を示すフローチャートである。
【図１５】Echoパケットの構成図である。
【図１６】Echo-Replyパケットの構成図である。
【図１７】ステータス返信コマンドのパケットのデータ領域の構造を示す。
【図１８】ダミーパケットを挿入して送信するときのイメージ図である。
【図１９】送信装置の他の実施の形態に係る処理を示すフローチャートである。
【符号の説明】
【０２１２】
Ｍ，Ｎ…パケット
Ｄ…ダミーパケット
１，２，３，４…情報処理装置
９，５０…ネットワーク
３１…システム制御部
３２…ＲＴＰパケット生成部
３３…パケット解析部
３４…ネットワーク監視部
３５…ＲＴＣＰパケット生成部
３６…時刻生成部
５２…パケット解析部
５３…パケット処理部
５５…ネットワーク監視部
５６…遅延計測部
５７…データベース
５８…システム制御部
１００…データ送信装置
２００…データ受信装置
３００…データ通信システム
【図１】
2005269000.tif 000003
【図２】
2005269000.tif 000004
【図３】
2005269000.tif 000005
【図４】
2005269000.tif 000006
【図５】
2005269000.tif 000007
【図６】
2005269000.tif 000008
【図７】
2005269000.tif 000009
【図８】
2005269000.tif 000010
【図９】
2005269000.tif 000011
【図１０】
2005269000.tif 000012
【図１１】
2005269000.tif 000013
【図１２】
2005269000.tif 000014
【図１３】
2005269000.tif 000015
【図１４】
2005269000.tif 000016
【図１５】
2005269000.tif 000017
【図１６】
2005269000.tif 000018
【図１７】
2005269000.tif 000019
【図１８】
2005269000.tif 000020
【図１９】
2005269000.tif 000021