(57)【要約】【課題】  データ通信における送受信端末間の伝送往復遅延を正確に計算することができるようにする。【解決手段】  パケット送信部２２１、MACパケット送信部２４１を経て、受信装置に送信されるデータパケットがネットワーク１０３に送出されるとき、タイムスタンプ付与部２４４がパケットの送信時刻を含むタイムスタンプを付与する。受信装置から送信された確認応答パケットをネットワーク１０３から取り出すとき、タイムスタンプ付与部２４４がパケットの送信時刻を含むタイムスタンプを付与する。パケットの送信時刻と受信時刻のタイムスタンプは、タイムスタンプ保持部２２２に保持され、伝送往復遅延の算出に利用される。本発明は、ビデオサーバに適用することができる。【選択図】図６
2006303750.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続される他の情報処理装置と通信を行う情報処理装置であって、
前記他の情報処理装置からの応答を得るために前記他の情報処理装置に送信されるパケットであって、第１のパケットの送信を指令する指令手段と、
前記指令手段による指令に基づいて生成された前記第１のパケットを、前記ネットワークに送出するときの時刻を、前記第１のパケットの送信時刻として前記送信時刻を含む第１のタイムスタンプを生成する第１の生成手段と、
前記第１のパケットに対する応答として前記他の情報処理装置から送信されるパケットであって、第２のパケットを前記ネットワークから取得するときの時刻を、前記第２のパケットの受信時刻として前記受信時刻を含む第２のタイムスタンプを生成する第２の生成手段と、
前記第１および第２のタイムスタンプを取得する取得手段と、
前記取得手段により取得された前記第１および第２のタイムスタンプに基づいて、自分と前記他の情報処理装置との間の伝送往復遅延を算出する算出手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記第１のパケットの宛先アドレスおよびパケットの種類に関する情報を含むフロー情報を記憶するフロー情報記憶手段をさらに備える
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ネットワークから取得されるパケットの送信元アドレスおよびパケットの種類に関する情報と、前記フロー情報記憶手段に記憶されるフロー情報とを比較して、前記ネットワークから取得されるパケットが前記第２のパケットであるか否かを判定する判定手段をさらに備える
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記伝送往復遅延の計算の実行を制御する実行制御手段をさらに備える
こと特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記実行制御手段は、ネットワーク層以上の層に設けられ、
前記指令手段と、前記第１および第２の生成手段と、前記取得手段と、前記算出手段とはデータリンク層以下の層に設けられる
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記実行制御手段は、前記他の情報処理装置とのデータの送受信の実行をさらに制御し、
前記指令手段との間で行われる前記伝送往復遅延の計算の実行に関するデータの授受は、前記他の情報処理装置とのデータの送受信の実行に関するデータの授受を行うインタフェースとは異なるインタフェースを用いて行われる
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
ネットワークを介して接続される他の情報処理装置と通信を行う情報処理装置の情報処理方法であって、
前記他の情報処理装置からの応答を得るために前記他の情報処理装置に送信されるパケットであって、第１のパケットの送信を指令する指令ステップと、
前記指令ステップの処理による指令に基づいて生成された前記第１のパケットを、前記ネットワークに送出するときの時刻を、前記第１のパケットの送信時刻として前記送信時刻を含む第１のタイムスタンプを生成する第１の生成ステップと、
前記第１のパケットに対する応答として前記他の情報処理装置から送信されるパケットであって、第２のパケットを前記ネットワークから取得するときの時刻を、前記第２のパケットの受信時刻として前記受信時刻を含む第２のタイムスタンプを生成する第２の生成ステップと、
前記第１および第２のタイムスタンプを取得する取得ステップと、
前記取得ステップの処理により取得された前記第１および第２のタイムスタンプに基づいて、自分と前記他の情報処理装置との間の伝送往復遅延を算出する算出ステップと
を含むことを特徴とする情報処理方法。
【請求項８】
ネットワークを介して接続される他の情報処理装置と通信を行う情報処理装置に情報処理を実行させるプログラムであって、
前記他の情報処理装置からの応答を得るために前記他の情報処理装置に送信されるパケットであって、第１のパケットの送信の指令を制御する指令制御ステップと、
前記指令制御ステップの処理による指令に基づいて生成された前記第１のパケットを、前記ネットワークに送出するときの時刻を、前記第１のパケットの送信時刻として前記送信時刻を含む第１のタイムスタンプの生成を制御する第１の生成制御ステップと、
前記第１のパケットに対する応答として前記他の情報処理装置から送信されるパケットであって、第２のパケットを前記ネットワークから取得するときの時刻を、前記第２のパケットの受信時刻として前記受信時刻を含む第２のタイムスタンプの生成を制御する第２の生成制御ステップと、
前記第１および第２のタイムスタンプの取得を制御する取得制御ステップと、
前記取得制御ステップの処理により取得された前記第１および第２のタイムスタンプに基づいて、自分と前記他の情報処理装置との間の伝送往復遅延の算出を制御する算出制御ステップと
をコンピュータに実行させることを特徴とするプログラム。
【請求項９】
請求項８に記載のプログラムが記録されている記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、プログラム、並びに記録媒体に関し、特に、データ通信における送受信端末間の伝送往復遅延を正確に計算することができるようにする情報処理装置および方法、プログラム、並びに記録媒体に関する。
【背景技術】
【０００２】
従来、パケット通信を利用して、送信端末から受信端末に、例えば、動画データの実時間ストリーミングを行う情報処理システムがある。また、近年のネットワーク帯域の増大（ネットワークの高速化）に伴い、UDP（User Datagram Protocol）を利用したインターネットストリーミングが行なわれるようになってきた。UDPは、ＴＣＰと異なりレート制御の仕組みが無いため、RFC3448で規定されるTFRC（TCP Friendly Rate Control）などのレート制御の仕組みを利用して、インターネット内でTCPと共存可能な通信方法となることが期待されている。
【０００３】
TCPでは、予め設定されたタイムアウト時間と、パケットの送受信に伴って測定される送受信端末間の伝送往復遅延(RTT：Round Trip Time)に基づいて、パケットロスの判定を行っている。例えば、設定したタイムアウト時間内に受信端末からの確認応答パケットが到着しなければ、パケットが廃棄されたと判定し、送信レートを制御するなどして輻輳回避を行う。すなわち、インターネットを利用して動画データのストリーミングなどを行う場合、UDPにおいても、TCPと同様にレート制御を行うためにRTTを計算することが期待されている。
【０００４】
図1は、従来のRTTの計測の方法を説明する図である。同図においては、送信端末１からネットワーク３を経由して送信されるデータパケットが、受信端末２により受信され、受信端末２が受信したデータパケットに対応する確認応答パケットが、受信端末２からネットワーク３を経由して送信端末１に送信され、送信端末１により受信される。
【０００５】
送信端末１は、自身が実装するソフトウェアまたはハードウェアにおけるアプリケーション層において、データパケットにタイムスタンプを付与してから、アプリケーション層の下位層であるトランスポート層乃至データリンク層（TCP/IP、MAC（Media Access Control）など）の処理を経てデータパケットを送信する。そして、受信端末２から送信され、送信端末１により受信された確認応答パケットも、送信時とは逆にトランスポート層乃至データリンク層（TCP/IP、MAC（Media Access Control）など）の処理を経てアプリケーション層に取得され、RTTが計算される。
【０００６】
送信端末１のアプリケーション層においてデータパケットにタイムスタンプが付与された時刻を時刻Ttsとする。受信端末２においてデータパケットを受信した時刻、確認応答パケットを送信した時刻をそれぞれTrr、Trxとする。また、送信端末１において、確認応答パケットがアプリケーション層で取得される時刻をTcとし、各時刻を時系列に表すと図２に示されるようになる。同図において、縦軸は時間軸であり、図中上から下に向かって時間が経過していくものとする。
【０００７】
したがって、送信端末１において、RTTは次式のようにして計算される。
【０００８】
RTT = Tc−Tts
【０００９】
また、受信端末２がデータパケットを受信してから、確認応答パケットを送信するまでにどの程度の時間を費やしたかを、確認応答パケットに記述して送り返すようにすれば、次式のようにRTTをさらに正確に計算することができる。
【００１０】
RTT = (Tc−Tts)−（Trx−Trr）
【００１１】
このようにして計算されるRTTは、上述した送信レートの制御など、通信処理における様々な制御にもちいられている。また、RTTに基づいて、ARQ（Automatic Repeat Request）、FEC（Forward Error Collection)などのエラー訂正に関する処理を動的に変更する技術も提案されている（例えば、特許文献１参照。）
【００１２】
【特許文献１】特開２００３−１７９５８０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、従来のRTTの計算方法は、送信端末１のアプリケーション層において、データパケットにタイムスタンプが付与された時刻またはアプリケーション層において確認応答パケットが取得された時刻が、パケットの送信時刻または受信時刻とされRTTが計算されているが、正確には、アプリケーション層の下位層であるトランスポート層乃至データリンク層（TCP/IP、MACなど）の処理を経てネットワーク３にデータパケットが送出された時刻がパケットの送信時刻であり、送信端末１の物理層においてネットワーク３から確認応答パケットが取り出された時刻がパケットの受信時刻である。すなわち、従来のRTTの計算方法は、送信端末１内部の処理による伝送遅延が考慮されていなかった。
【００１４】
これに対して、近年のブロードバンドネットワークの普及に伴ってRTTの計算方法を見直す必要に迫られている。すなわち、従来、インターネットなど、例えば個人が利用する安価なネットワークの帯域（伝送速度）は、数十Kbps〜数百Kbpsが主流であり、ネットワーク３の伝送遅延と比して、端末内の処理に要する時間は無視できる程小さい（短い）ものであったが、近年では、１Gbpsに近い帯域の利用が充分安価に可能となっており、従来と比してネットワーク上で利用できる帯域は飛躍的に拡大した。一方で、送信装置１内でのデータの伝送速度（処理速度）は、従来と比して飛躍的に向上しているとはいい難い。
【００１５】
また、例えば、送信端末１のアプリケーションに含まれる画像データの圧縮符号化など処理負荷の高いプログラムが稼動している場合、RTTの計算処理が遅延してしまい、正確かつ適時にRTTを算出することができない。
【００１６】
従って、ネットワーク３上をパケットが通過するのに要する時間と比して、アプリケーション層乃至データリンク層の処理を経てパケットがネットワーク３に対して送信または受信されるのに要する時間は無視できる程小さい（短い）とは言えず、今後は、送信装置１内部における伝送遅延も考慮してＲＴＴを計算する必要がある。
【００１７】
本発明はこのような状況に鑑みてなされたものであり、データ通信における送受信端末間の伝送往復遅延を正確に計算することができるようにするものである。
【課題を解決するための手段】
【００１８】
本発明の情報処理装置は、ネットワークを介して接続される他の情報処理装置と通信を行う情報処理装置であって、他の情報処理装置からの応答を得るために他の情報処理装置に送信されるパケットであって、第１のパケットの送信を指令する指令手段と、指令手段による指令に基づいて生成された第１のパケットを、ネットワークに送出するときの時刻を、第１のパケットの送信時刻として送信時刻を含む第１のタイムスタンプを生成する第１の生成手段と、第１のパケットに対する応答として他の情報処理装置から送信されるパケットであって、第２のパケットをネットワークから取得するときの時刻を、第２のパケットの受信時刻として受信時刻を含む第２のタイムスタンプを生成する第２の生成手段と、第１および第２のタイムスタンプを取得する取得手段と、取得手段により取得された第１および第２のタイムスタンプに基づいて、自分と他の情報処理装置との間の伝送往復遅延を算出する算出手段とを備えることを特徴とする。
【００１９】
前記第１のパケットの宛先アドレスおよびパケットの種類に関する情報を含むフロー情報を記憶するフロー情報記憶手段をさらに備えるようにすることができる。
【００２０】
前記ネットワークから取得されるパケットの送信元アドレスおよびパケットの種類に関する情報と、フロー情報記憶手段に記憶されるフロー情報とを比較して、ネットワークから取得されるパケットが第２のパケットであるか否かを判定する判定手段をさらに備えるようにすることができる。
【００２１】
前記伝送往復遅延の計算の実行を制御する実行制御手段をさらに備えるようにすることができる。
【００２２】
前記実行制御手段は、ネットワーク層以上の層に設けられ、指令手段と、第１および第２の生成手段と、取得手段と、算出手段とはデータリンク層以下の層に設けられるようにすることができる。
【００２３】
前記実行制御手段は、他の情報処理装置とのデータの送受信の実行をさらに制御し、指令手段との間で行われる伝送往復遅延の計算の実行に関するデータの授受は、他の情報処理装置とのデータの送受信の実行に関するデータの授受を行うインタフェースとは異なるインタフェースを用いて行われるようにすることができる。
【００２４】
本発明の情報処理方法は、ネットワークを介して接続される他の情報処理装置と通信を行う情報処理装置の情報処理方法であって、他の情報処理装置からの応答を得るために他の情報処理装置に送信されるパケットであって、第１のパケットの送信を指令する指令ステップと、指令ステップの処理による指令に基づいて生成された第１のパケットを、ネットワークに送出するときの時刻を、第１のパケットの送信時刻として送信時刻を含む第１のタイムスタンプを生成する第１の生成ステップと、第１のパケットに対する応答として他の情報処理装置から送信されるパケットであって、第２のパケットをネットワークから取得するときの時刻を、第２のパケットの受信時刻として受信時刻を含む第２のタイムスタンプを生成する第２の生成ステップと、第１および第２のタイムスタンプを取得する取得ステップと、取得ステップの処理により取得された第１および第２のタイムスタンプに基づいて、自分と他の情報処理装置との間の伝送往復遅延を算出する算出ステップとを含むことを特徴とする。
【００２５】
本発明のプログラムは、ネットワークを介して接続される他の情報処理装置と通信を行う情報処理装置に情報処理を実行させるプログラムであって、他の情報処理装置からの応答を得るために他の情報処理装置に送信されるパケットであって、第１のパケットの送信の指令を制御する指令制御ステップと、指令制御ステップの処理による指令に基づいて生成された第１のパケットを、ネットワークに送出するときの時刻を、第１のパケットの送信時刻として送信時刻を含む第１のタイムスタンプの生成を制御する第１の生成制御ステップと、第１のパケットに対する応答として他の情報処理装置から送信されるパケットであって、第２のパケットをネットワークから取得するときの時刻を、第２のパケットの受信時刻として受信時刻を含む第２のタイムスタンプの生成を制御する第２の生成制御ステップと、第１および第２のタイムスタンプの取得を制御する取得制御ステップと、取得制御ステップの処理により取得された第１および第２のタイムスタンプに基づいて、自分と他の情報処理装置との間の伝送往復遅延の算出を制御する算出制御ステップとをコンピュータに実行させることを特徴とする。
【００２６】
本発明の記録媒体は、ネットワークを介して接続される他の情報処理装置と通信を行う情報処理装置に情報処理を実行させるプログラムが記録されている記録媒体であって、他の情報処理装置からの応答を得るために他の情報処理装置に送信されるパケットであって、第１のパケットの送信の指令を制御する指令制御ステップと、指令制御ステップの処理による指令に基づいて生成された第１のパケットを、ネットワークに送出するときの時刻を、第１のパケットの送信時刻として送信時刻を含む第１のタイムスタンプの生成を制御する第１の生成制御ステップと、第１のパケットに対する応答として他の情報処理装置から送信されるパケットであって、第２のパケットをネットワークから取得するときの時刻を、第２のパケットの受信時刻として受信時刻を含む第２のタイムスタンプの生成を制御する第２の生成制御ステップと、第１および第２のタイムスタンプの取得を制御する取得制御ステップと、取得制御ステップの処理により取得された第１および第２のタイムスタンプに基づいて、自分と他の情報処理装置との間の伝送往復遅延の算出を制御する算出制御ステップとをコンピュータに実行させるプログラムが記録されていることを特徴とする。
【００２７】
本発明の情報処理装置および方法、並びにプログラムにおいては、他の情報処理装置からの応答を得るために他の情報処理装置に送信されるパケットであって、第１のパケットの送信が指令され、指令に基づいて生成された第１のパケットが、ネットワークに送出されときの時刻が、第１のパケットの送信時刻として送信時刻を含む第１のタイムスタンプが生成され、第１のパケットに対する応答として他の情報処理装置から送信されるパケットであって、第２のパケットがネットワークから取得されるときの時刻が、第２のパケットの受信時刻として受信時刻を含む第２のタイムスタンプが生成され、第１および第２のタイムスタンプが取得され、取得された第１および第２のタイムスタンプに基づいて、自分と他の情報処理装置との間の伝送往復遅延が算出される。
【発明の効果】
【００２８】
本発明によれば、データ通信における送受信端末間の伝送往復遅延を正確に計算することができる。
【発明を実施するための最良の形態】
【００２９】
以下に本発明の実施の形態を説明するが、本明細書に記載した発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が明細書に記載されていることを確認するためのものである。従って、明細書には記載されているが、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００３０】
さらに、この記載は、明細書に記載されている発明が、全て請求されていることを意味するものではない。換言すれば、この記載は、明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出願、または追加される発明の存在を否定するものではない。
【００３１】
請求項１に記載の情報処理装置は、ネットワークを介して接続される他の情報処理装置（例えば、図３の受信装置１０２）と通信を行う情報処理装置であって、前記他の情報処理装置からの応答を得るために前記他の情報処理装置に送信されるパケットであって、第１のパケットの送信を指令する指令手段（例えば、図７のステップS１０１の処理を実行する図６のアプリケーション２０１または図９のコマンド制御部２２４）と、前記指令手段による指令に基づいて生成された前記第１のパケットを、前記ネットワークに送出するときの時刻を、前記第１のパケットの送信時刻として前記送信時刻を含む第１のタイムスタンプを生成する第１の生成手段（例えば、図７のステップS１０２の処理を実行する図６のタイムスタンプ付与部２４４）と、前記第１のパケットに対する応答として前記他の情報処理装置から送信されるパケットであって、第２のパケットを前記ネットワークから取得するときの時刻を、前記第２のパケットの受信時刻として前記受信時刻を含む第２のタイムスタンプを生成する第２の生成手段（例えば、例えば、図８のステップS１０７の処理を実行する図６のタイムスタンプ付与部２４４）と、前記第１および第２のタイムスタンプを取得する取得手段（例えば、図６のタイムスタンプ保持部２２２）と、前記取得手段により取得された前記第１および第２のタイムスタンプに基づいて、自分と前記他の情報処理装置との間の伝送往復遅延を算出する算出手段（例えば、図８のステップS１１２の処理を実行する図６のアプリケーション２０１または図９のRTT計測部２２８）とを備える。
【００３２】
請求項２に記載の情報処理装置は、前記第１のパケットの宛先アドレスおよびパケットの種類に関する情報を含むフロー情報を記憶するフロー情報記憶手段（例えば、図９のフロー情報保持部２２６）をさらに備えるようにすることができる。
【００３３】
請求項３に記載の情報処理装置は、前記ネットワークから取得されるパケットの送信元アドレスおよびパケットの種類に関する情報と、前記フロー情報記憶手段に記憶されるフロー情報とを比較して、前記ネットワークから取得されるパケットが前記第２のパケットであるか否かを判定する判定手段（例えば、図９のフロー特定部２２７）をさらに備えるようにすることができる。
【００３４】
請求項４に記載の情報処理装置は、前記伝送往復遅延の計算の実行を制御する実行制御手段（例えば、図９のアプリケーション２０１）をさらに備えるようにすることができる。
【００３５】
請求項５に記載の情報処理装置は、前記実行制御手段が、ネットワーク層以上の層に設けられ、前記指令手段と、前記第１および第２の生成手段と、前記取得手段と、前記算出手段とはデータリンク層以下の層（例えば、図９のデバイスドライバ２０２またはMAC２０３）に設けられるようにすることができる。
【００３６】
請求項６に記載の情報処理装置は、前記実行制御手段が、前記他の情報処理装置とのデータの送受信の実行をさらに制御し、前記指令手段との間で行われる前記伝送往復遅延の計算の実行に関するデータの授受は、前記他の情報処理装置とのデータの送受信の実行に関するデータの授受を行うインタフェース（例えば、図９のインタフェースAまたはB）とは異なるインタフェース（例えば、図９のインタフェースC）を用いて行われるようにすることができる。
【００３７】
請求項７に記載の情報処理方法は、ネットワークを介して接続される他の情報処理装置（例えば、図３の受信装置１０２）と通信を行う情報処理装置の情報処理方法であって、前記他の情報処理装置からの応答を得るために前記他の情報処理装置に送信されるパケットであって、第１のパケットの送信を指令する指令ステップ（例えば、図７のステップS１０１の処理）と、前記指令ステップの処理による指令に基づいて生成された前記第１のパケットを、前記ネットワークに送出するときの時刻を、前記第１のパケットの送信時刻として前記送信時刻を含む第１のタイムスタンプを生成する第１の生成ステップ（例えば、図７のステップS１０２の処理）と、前記第１のパケットに対する応答として前記他の情報処理装置から送信されるパケットであって、第２のパケットを前記ネットワークから取得するときの時刻を、前記第２のパケットの受信時刻として前記受信時刻を含む第２のタイムスタンプを生成する第２の生成ステップ（例えば、例えば、図８のステップS１０７の処理）と、前記第１および第２のタイムスタンプを取得する取得ステップ（例えば、図８のステップS１１１）と、前記取得ステップの処理により取得された前記第１および第２のタイムスタンプに基づいて、自分と前記他の情報処理装置との間の伝送往復遅延を算出する算出ステップ（例えば、図８のステップS１１２の処理）とを含む。
【００３８】
請求項８に記載のプログラムは、ネットワークを介して接続される他の情報処理装置（例えば、図３の受信装置１０２）と通信を行う情報処理装置に情報処理を実行させるプログラムであって、前記他の情報処理装置からの応答を得るために前記他の情報処理装置に送信されるパケットであって、第１のパケットの送信の指令を制御する指令制御ステップ（例えば、図７のステップS１０１の処理）と、前記指令制御ステップの処理による指令に基づいて生成された前記第１のパケットを、前記ネットワークに送出するときの時刻を、前記第１のパケットの送信時刻として前記送信時刻を含む第１のタイムスタンプの生成を制御する第１の生成制御ステップ（例えば、図７のステップS１０２の処理）と、前記第１のパケットに対する応答として前記他の情報処理装置から送信されるパケットであって、第２のパケットを前記ネットワークから取得するときの時刻を、前記第２のパケットの受信時刻として前記受信時刻を含む第２のタイムスタンプの生成を制御する第２の生成制御ステップ（例えば、例えば、図８のステップS１０７の処理）と、前記第１および第２のタイムスタンプの取得を制御する取得制御ステップ（例えば、図８のステップS１１１）と、前記取得制御ステップの処理により取得された前記第１および第２のタイムスタンプに基づいて、自分と前記他の情報処理装置との間の伝送往復遅延の算出を制御する算出制御ステップ（例えば、図８のステップS１１２の処理）とをコンピュータに実行させる。
【００３９】
以下、図面を参照して、本発明の実施の形態について説明する。
【００４０】
図３は、本発明を適用した通信システムの一実施形態に係る構成例を示す図である。
【００４１】
図３において、通信システム１００は、送信装置１０１、受信装置１０２、およびインターネットなどのネットワーク１０３により構成され、送信装置１０１と受信装置１０２がネットワーク１０を介してデータを送受信するシステムである。例えば、送信装置１０１は、動画像などのデータをパケット化して、データパケットとして受信装置１０２にストリーミング送信し、受信装置１０２がデータパケットを受信して動画像を再生する。また、受信装置１０２は、送信装置１０１が送信したデータパケットに対応する確認応答パケットを、送信装置１０１に送信する。
【００４２】
なお、確認応答パケットには、受信装置１０２がデータパケットを受信した時刻および受信装置１０２が確認応答パケットを送信した時刻などRTTの計算に必要となる情報が記述されており、ここでは、受信装置１０２から送信装置１０１に送信されるパケットのうち、送信装置１０１から送信されて受信したデータパケットに対して受信装置１０２が応答として返信するパケットを確認応答パケットと称する。
【００４３】
送信装置１０１は、受信装置１０２から送信された確認応答パケットを受信して、送信装置１０１と受信装置１０２との間の伝送往復遅延(RTT：Round Trip Time)を計算する。そして、送信装置１０１は、RTTと、RTTに基づいて設定されるタイムアウト時間に基づいて、パケットロスの判定を行ない、設定したタイムアウト時間内に受信装置１０２からの確認応答パケットが到着しなければ、パケットが廃棄されたと判定し、送信レートを変更するなどして輻輳回避の処理を行う。
【００４４】
ここで、送信装置１０１から送信されるパケットのパケットサイズをs、RTTをR、ロス率(0〜 1.0)をp、タイムアウト時間をt RTO、確認応答パケットの送信の割合（何個のパケット毎に確認応答を返すか）をbとすると、送信レートXは、例えば式（１）の通り計算できる。
【００４５】
【数１】
2006303750.tif 000003
【００４６】
このうち、パケットサイズsと確認応答パケットの送信の割合b(通常1または2)は定数、t RTOは通常4×RTTなので、ネットワーク中のパケットロス率とRTTによって送信レートが決定することが分かる。
【００４７】
送信装置１０１は、例えば、このようにして計算される送信レートXに基づいて、自身の送信レートを制御するなどして輻輳回避の処理を行う。
【００４８】
図４は、上述したRTTの計算にあたって送信装置１０１と受信装置１０２との間で行われる処理と時間の経過を説明する図である。同図においては、縦軸が時間軸であり、送信装置１０１と受信装置１０２において行われる処理が、その処理が行われる時刻とともに示されており、図中上から下に向かって時間が経過していくものとする。
【００４９】
送信装置１０１は、時刻Ttsにおいて、RTTを計算するためにデータパケットの送信を要求し、時刻Txxにおいて、そのデータパケットがネットワーク１０３に送出される。
【００５０】
受信装置１０２は、時刻Trrにおいて、ネットワーク１０３を経て送信されてきたデータパケットを受信し、時刻Trxにおいて、受信したデータパケットに対応する確認応答パケットをネットワーク１０３に送出する。
【００５１】
その後、送信装置１０１は、時刻Trxにおいて、ネットワーク１０３を経て送信されてきた確認応答パケットを、ネットワークから取り出して（取得して）受信し、時刻Tcにおいて、受信した確認応答パケットに基づいてRTTの計算を開始する。
【００５２】
従来の狭帯域ネットワークを利用する場合、通信システム１００において、ネットワーク１０３で発生する遅延と比して、送信装置１０１内の処理に要する時間は無視できる程小さい（短い）ものであった。
【００５３】
しかし、近年のブロードバンドネットワークの普及に伴って、ネットワーク１０３の帯域は充分広くなっており（高速化されており）、RTTを正確に計算するためには、送信装置１０１内の処理に要する時間は無視できないものとなってきている。
【００５４】
そこで、本発明では、送信装置１０１内の処理に要する時間を考慮してRTTを計算する。すなわち、従来は、送信装置１０１内の処理に要する時間を考慮せず時刻Ttsにおいてデータパケットが送信されたものとして近似され、時刻Tcにおいて確認応答パケットが受信されたものとして近似されてRTTが計算されていたが、本発明では、時刻Ttxにおいてデータパケットが送信され、時刻Txrにおいて確認応答パケットが受信されたものとしてRTTを計算する。このようにすることで、送信装置１０１内の処理に要する時間を考慮した、より正確なRTTの計算が可能となる。
【００５５】
図５は、送信装置１０１の内部構成例を示すブロック図である。同図において、CPU（Central Processing Unit）１５１は、ROM（Read Only Memory）１５２に記憶されているプログラム、または記憶部１５８からRAM（Random Access Memory）１５３にロードされたプログラムに従って各種の処理を実行する。RAM１５３にはまた、CPU１５１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【００５６】
CPU１５１、ROM１５２、およびRAM１５３は、バス１５４を介して相互に接続されている。このバス１５４にはまた、入出力インタフェース１５５も接続されている。
【００５７】
入出力インタフェース１５５には、キーボード、マウスなどよりなる入力部１５６、CRT(Cathode Ray Tube)、LCD(Liquid Crystal display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部１５７、ハードディスクなどより構成される記憶部１５８、モデム、LANカードなどのネットワークインタフェースカードなどより構成される通信部１５９が接続されている。通信部１５９は、インターネットを含むネットワークを介しての通信処理を行う。
【００５８】
入出力インタフェース１５５にはまた、必要に応じてドライブ１６０が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア１６１が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部１５８にインストールされる。
【００５９】
図６は、図５のＣＰＵ１５１により実行されるソフトウェアの機能的構成例を示すブロック図である。
【００６０】
同図において、ＣＰＵ１５１により実行されるソフトウェアがアプリケーション２０１、デバイスドライバ２０２、およびMAC（Media Access Control）の３つの階層により構成されている。
【００６１】
アプリケーション２０１は、例えば、受信装置１０２に対して行われるデータの送受信などを制御する一連のアプリケーションプログラムなどが含まれる階層を表すプログラム群であり、必要に応じてRTTの計算と、RTTの計算に必要な処理の実行を制御する。アプリケーション２０１は、OSI参照モデルにおいては、ネットワーク層を含むネットワーク層より上位の各層に対応することになる。
【００６２】
デバイスドライバ２０２は、例えば、送信装置１０１の通信部１５９に対応するネットワークインタフェースカードなどの通信デバイスを制御するプログラムが含まれる階層を表すプログラム群であり、アプリケーション２０１からの指令に基づいて、パケットの送信若しくは受信、または後述するタイムスタンプの提供などの処理を実行する。なお、デバイスドライバ２０２は、OSI参照モデルにおいては、データリンク層に対応することになる。
【００６３】
MAC２０３は、デバイスドライバ２０２により制御される通信デバイスの機能ブロックが含まれる階層を表しており、実際には、ネットワークインタフェースカードなどのハードウェアとして設けられるようにしてもよい。MAC２０３は、デバイスドライバ２０２の制御に基づいて、ネットワーク１０３にパケットを送出（送信）し、またネットワーク１０３からパケットを取り出す（受信する）とともに、送信または受信するパケットの送信時刻または受信時刻を表すタイムスタンプを付与（生成）する。なお、MAC２０３は、OSI参照モデルにおいては、データリンク層（ただし一部は物理層）に対応することになる。
【００６４】
アプリケーション２０１は、デバイスドライバ２０２に設けられ、図中円で示された３つのインタフェースであるインタフェースA乃至Cを用いて、デバイスドライバ２０２とのデータの送受信を行う。
【００６５】
アプリケーション２０１には、例えば受信装置１０２とのTCP/IP通信またはUDPの通信を行うためのパケットの生成、送達確認、データ量の制御などを行う一連のプログラムなどで構成されるTCPI/IPのプロトコルスタックが含まれている。例えば、送信装置１０１から送信されるデータであって、受信装置１０２との間で送受信される動画像のデータなどは、TCPI/IPのプロトコルスタックによる処理を経てネットワーク１０３に対して送信または受信される。なお、TCPI/IPのプロトコルスタックを構成する一連のプログラムは、例えば、一般に流通するＯＳ（Operating System）などに組み込まれており、実際にはUDPの通信に関する処理も行うが、ここでは、TCPI/IPのプロトコルスタックと称する。
【００６６】
インタフェースAまたはBは、ネットワーク１０３に対してパケットを送信または受信するための処理に必要なデータの送受信に用いられるインタフェースであり、例えば、アプリケーション２０１に含まれるTCPI/IPのプロトコルスタックなどに対応するように構成されている。すなわち、インタフェースAまたはBは、例えば、一般に流通しているネットワークインタフェースカードのドライバソフトなどのインタフェースと同様に構成される。
【００６７】
インタフェースCは、アプリケーション２０１の指令に基づいて、タイムスタンプを提供する処理に必要なデータの送受信に用いられるインタフェースであり、TCPI/IPのプロトコルスタックなどの処理を経て行われるネットワーク１０３に対してのパケットの送信または受信の処理には用いられない。したがって、デバイスドライバ２０２およびＭＡＣ２０３を送信装置１０１に実装するにあたって、アプリケーション２０１に含まれるTCP/IPのプロトコルスタックなどを変更する必要はない。
【００６８】
RTTの計算を行う場合、アプリケーション２０１は、インタフェースAを介してパケット送信部２２１にパケットの送信の指令を出力し（図４の時刻Tts）、パケット送信部２２１は、MACパケット送信部２４１を制御して、MACアドレスを付与してデータパケットを生成し、ネットワーク１０３に送出させる。このとき、送出されるデータパケットが、タイムスタンプ付与部２４４を経由し、タイムスタンプ付与部２４４において計時部２４５の出力値に基づく現在時刻が取得されて、送信時刻（図４の時刻Txx）を表すタイムスタンプが生成され、タイムスタンプ通知部２４２に出力される。なお、計時部２４５が、送信装置１０１に内蔵されるタイマなどに基づいて現在時刻を計時するようにしてもよいし、ネットワーク１０３を介して取得される他の装置からの情報に基づいて現在時刻を計時するようにしてもよい。
【００６９】
タイムスタンプ通知部２４２は、タイムスタンプ保持部２２２にデータパケットの送信時刻を表すタイムスタンプを通知し、タイムスタンプ保持部２２２がそれを保持（記憶）する。
【００７０】
また、受信装置１０２から送信された確認応答パケットが、ネットワーク１０３からタイムスタンプ付与部２４４を経由して取り出され、MACパケット受信部２４３、およびパケット２２３により受信される。このとき、タイムスタンプ付与部２４４において計時部２４５の出力値に基づく現在時刻が取得されて、受信時刻（図４の時刻Txr）を表すタイムスタンプが生成され、タイムスタンプ通知部２４２に出力される。
【００７１】
タイムスタンプ通知部２４２は、タイムスタンプ保持部２２２に確認応答パケットの受信時刻を表すタイムスタンプを通知し、タイムスタンプ保持部２２２がそれを保持（記憶）する。
【００７２】
パケット受信部２２３が、インタフェースBを介してアプリケーション２０１に確認応答パケットを供給するとともに確認応答パケットの受信を通知すると、アプリケーション２０１は、インタフェースCを介してタイムスタンプ保持部２２２にタイムスタンプの取得要求を出力し、タイムスタンプ保持部２２２からデータパケットの送信時刻を表すタイムスタンプと、確認応答パケットの受信時刻を表すタイムスタンプとを取得して、例えば式（２）によりRTTを計算する。
【００７３】
RTT = (Txr−Txx)−（Trx−Trr）  ・・・（２）
【００７４】
次に、図７と図８のフローチャートを参照して、送信装置１０１の図６を参照して上述した各部によるRTT計算処理について説明する。この処理は、例えば、所定の間隔で定期的に実行されるようにしてもよいし、ユーザによる指令などに基づいて実行されるようにしてもよい。
【００７５】
ステップS１０１において、アプリケーション２０１は、パケット送信部２２１にRTTを計算するためのデータパケットの送信を指令する（図４の時刻Tts）。これによりパケット送信部２２１は、MACパケット送信部２４１を制御して、MACアドレスを付与してデータパケットを生成し、タイムスタンプ付与部２４４に出力する。
【００７６】
ステップS１０２において、タイムスタンプ付与部２４４は、計時部２４５の出力値に基づいて現在時刻を取得して、タイムスタンプを付与する。このとき、データパケットの送信時刻（図４の時刻Txx）を表すタイムスタンプが生成され、タイムスタンプ通知部２４２に出力される。
【００７７】
ステップS１０３において、タイムスタンプ付与部２４４は、データパケットをネットワーク１０３に送出する。ここで、ネットワーク１０３に送出されたデータパケットは、受信装置１０２により受信され（図４の時刻Trr）、また、受信装置１０２は、受信したデータパケットに対応する確認応答パケットをネットワーク１０３を介して送信装置１０１に送信する（図４の時刻Trx）。
【００７８】
ステップS１０４において、タイムスタンプ通知部２４２は、ステップS１０２の処理により付与されたタイムスタンプを、タイムスタンプ保持部２２２に通知（出力）する。
【００７９】
ステップS１０５において、タイムスタンプ保持部２２２は、ステップS１０４の処理により通知されたタイムスタンプを保持（記憶）する。これにより、タイムスタンプ保持部２２２にデータパケットの送信時刻（図４の時刻Txx）を表すタイムスタンプが記憶される。
【００８０】
図８のステップS１０６において、タイムスタンプ付与部２４４は、ステップS１０３の処理で送出されたデータパケットに対応して受信装置１０２により送信された確認応答パケットをネットワーク１０３から取り出す（受信する）。これにより、確認応答パケットは、MACパケット受信部２４３、およびパケット２２３により受信される。
【００８１】
ステップS１０７において、タイムスタンプ付与部２４４は、計時部２４５の出力値に基づいて現在時刻を取得し、タイムスタンプを付与する。このとき、確認応答パケットの受信時刻（図４の時刻Txr）を表すタイムスタンプが生成され、タイムスタンプ通知部２４２に出力される。
【００８２】
ステップS１０８において、タイムスタンプ通知部２４２は、ステップS１０７の処理により付与されたタイムスタンプを、タイムスタンプ保持部２２２に通知（出力）する。
【００８３】
ステップS１０９において、タイムスタンプ保持部２２２は、ステップS１０８の処理により通知されたタイムスタンプを保持（記憶）する。これにより、タイムスタンプ保持部２２２に確認応答パケットの受信時刻（図４の時刻Txr）を表すタイムスタンプが記憶される。
【００８４】
ステップS１１０において、パケット受信部２２３は、アプリケーション２０１に確認応答パケットを供給し、確認応答パケットの受信を通知する。
【００８５】
ステップS１１１において、アプリケーション２０１は、タイムスタンプ保持部２２２に記憶されているデータパケットの送信時刻（図４の時刻Txx）を表すタイムスタンプと、確認応答パケットの受信時刻（図４の時刻Txr）を表すタイムスタンプとを取得する。
【００８６】
ステップS１１２において、アプリケーション１１２は、ステップS１１１の処理により取得されたタイムスタンプと、確認応答パケットの記述内容に基づいて、例えば、式（２）によりRTTを計算する（図４の時刻Tc）。
【００８７】
このようにして、RTTが計算される。このようにすることで、送信装置１０１の内部での処理に要する時間である図４の時刻Ttsと時刻Txxの差分、および時刻Txrと時刻Tcの差分が含まれないようにして正確にRTTを計算することができる。
【００８８】
また、アプリケーション２０１とデバイスドライバ２０２との間で、パケットの送信または受信の処理に必要なデータの送受信に用いられるインタフェース（インタフェースAまたはB）と、タイムスタンプの提供の処理に必要なデータの送受信に用いられるインタフェース（インタフェースC）とがそれぞれ設けられるようにしたので、ユーザは、例えば、従来の送信装置１０１にMAC２０３（ネットワークインタフェースカード）およびそれに対応するデバイスドライバ２０２を組み込むだけで、正確なRTTの計算ができるように対処することができる。
【００８９】
ところで、以上においては、アプリケーション２０１でRTTを計算する例について説明したが、デバイスドライバ２０２でRTTを計算させるようにすることも可能である。
【００９０】
図９は、デバイスドライバ２０２でRTTを計算させるようにした場合の、図５のＣＰＵ１５１により実行されるソフトウェアの機能的構成例を示すブロック図である。同図は、図６に対応するブロック図であり、図６と対応する部分には同一の符号が付されている。
【００９１】
図９においては、デバイスドライバ２０２の構成が図６の場合と異なっている。すなわち、図９のブロック図においては、コマンド制御部２２４乃至RTT計測部２２８が新たに設けられている。
【００９２】
コマンド制御部２２４は、インタフェースCを介してアプリケーション２０１からのRTT計算（計測）の指令を受け付け、パケット生成部２２５を制御して、RTTの計算に必要となるデータパケットを生成させる。
【００９３】
パケット生成部２２５は、生成したパケットをMACパケット送信部２４１に出力して、タイムスタンプ付与部２４４を経てネットワーク１０３に送出させるとともに、生成したパケットのフロー情報をフロー情報保持部２２６に出力する。ここで、フロー情報は、RTTの計算に必要となるデータパケットを特定するための情報であり、例えば、データパケットの宛先アドレス（いまの場合、受信端末１０２のアドレス）、およびデータパケットの種類（例えば、ICMP（Internet Control Message Protocol）Echo Request）などの情報とされる。
【００９４】
また、送出されるデータパケットのタイムスタンプ（データパケットの送信時刻：図４の時刻Txx）がタイムスタンプ通知部２４２からRTT計測部２２８に通知される。
【００９５】
一方、ネットワーク１０３から受信される受信装置１０２から送信されたパケットは、タイムスタンプ付与部２４４を経てMACパケット受信部２４３からフロー特定部２２７に供給される。フロー特定部２２７は、MACパケット受信部２４３から供給されるパケットの送信元アドレス（受信端末１０２のアドレスか否か）、およびパケットの種類（ICMP Echo Replyであるか否か）などの情報をチェックし、フロー情報保持部２２６に登録されているフロー情報と比較する。
【００９６】
そして比較結果に基づいて、フロー特定部２２７は、MACパケット受信部２４３から供給されたパケットが、RTTの計算のために送信されたデータパケットに対応する確認応答パケットか否かを判定し、当該パケットがRTTの計算のために送信されたデータパケットに対応する確認応答パケットであると判定された場合、タイムスタンプ保持部２２２から当該パケットのタイムスタンプ（確認応答パケットの受信時刻：図４の時刻Txr）を取得して、RTT計測部２２８に、当該パケットとともに出力する。
【００９７】
RTT計測部２２８は、データパケットの送信時刻を表すタイムスタンプと、確認応答パケットの受信時刻を表すタイムスタンプとを取得して、例えば式（２）によりRTTを計算し、計算結果をコマンド制御部２２４に出力する。
【００９８】
コマンド制御部２２４は、RTTの計算の完了の通知と、計算結果とをアプリケーション２０１にインタフェースCを介して出力する。
【００９９】
図９の例の場合、RTTの計算に関する処理以外の通信に伴うデータの送受信が、アプリケーション２０１とデバイスドライバ２０２との間で、インタフェースAまたはBを介して行われることになる。
【０１００】
次に図１０のフローチャートを参照して、図９のブロック図に対応するRTT計算処理の例について説明する。
【０１０１】
ステップS１５１において、デバイスドライバ２０２は、アプリケーション２０１よりRTTの計測が指令されたか否かを判定し、指令されたと判定されるまで待機する。インタフェースCを介してアプリケーション２０１からのRTT計測の指令があった場合（図４のTts）、処理は、ステップS１５２に進む。
【０１０２】
ステップS１５２において、デバイスドライバ２０２は、図１１を参照して後述するパケット送信処理を実行する。これによりRTTを計算するためのデータパケットが受信装置１０２に対して送信される。
【０１０３】
ステップS１５２の処理の後、ステップS１５３において、デバイスドライバ２０２は、図１２を参照して後述するパケット受信処理を実行する。これにより、ステップS１５２の処理により送信されたデータパケットに対応して、受信装置１０２が送信した確認応答パケットが受信される。
【０１０４】
ステップS１５３の処理の後、ステップS１５４において、デバイスドライバ２０２は、図１３を参照して後述するRTT算出処理を実行する。これによりステップS１５２の処理で送信されたデータパケットの送信時刻と、ステップS１５３の処理により受信された確認応答パケットの受信時刻に基づくRTTが計算され、計算結果がアプリケーション２０１に出力される。
【０１０５】
次に、図１１のフローチャートを参照して、図１０のステップS１５２のパケット送信処理の詳細について説明する。
【０１０６】
ステップS２０１において、コマンド制御部２２４は、パケット生成部２２５にRTTを計算するためのデータパケットの生成を指令する。
【０１０７】
ステップS２０２において、パケット生成部２２５は、RTTを計算するためのデータパケットを生成する。いまの場合、宛先が受信装置１０２のアドレスであるICMP Echo Requestのパケットが生成される。また、生成されたデータパケットは、MACパケット送信部２４１で、MACアドレスが付与されて、タイムスタンプ付与部２４４に出力される。
【０１０８】
ステップS２０３において、フロー情報保持部２２６は、フロー情報を登録（記憶）する。これにより、データパケットのフロー情報として、パケットの宛先アドレス、パケットの種類などの情報が記憶される。
【０１０９】
ステップS２０４において、タイムスタンプ付与部２４４は、計時部２４５の出力値に基づいて現在時刻を取得して、タイムスタンプを付与する。このとき、データパケットの送信時刻（図４の時刻Txx）を表すタイムスタンプが生成され、タイムスタンプ通知部２４２に出力される。
【０１１０】
ステップS２０５において、タイムスタンプ付与部２４４は、データパケットをネットワーク１０３に送出する。ここで、ネットワーク１０３に送出されたデータパケットは、受信装置１０２により受信され（図４の時刻Trr）、また、受信装置１０２は、受信したデータパケットに対応する確認応答パケットを、ネットワーク１０３を介して送信装置１０１に送信する（図４の時刻Trx）。
【０１１１】
ステップS２０６において、タイムスタンプ通知部２４２は、ステップS２０４の処理により付与されたタイムスタンプを、タイムスタンプ保持部２２２に通知（出力）する。
【０１１２】
ステップS２０７において、タイムスタンプ保持部２２２は、ステップS２０６の処理により通知されたタイムスタンプを保持（記憶）する。これにより、タイムスタンプ保持部２２２にデータパケットの送信時刻（図４の時刻Txx）を表すタイムスタンプが記憶される。
【０１１３】
このようにしてデータパケットが送信される。
【０１１４】
次に、図１２のフローチャートを参照して、図１０のステップS１５３のパケット受信処理の詳細について説明する。
【０１１５】
ステップS２２１において、タイムスタンプ付与部２４４は、受信装置１０２により送信されたパケットをネットワーク１０３から取り出す（受信する）。これにより、当該パケットは、MACパケット受信部２４３を経て、フロー特定部２２７に出力される。
【０１１６】
ステップS２２２において、タイムスタンプ付与部２４４は、計時部２４５の出力値に基づいて現在時刻を取得し、タイムスタンプを付与する。このとき、ステップS２２１の処理で受信されたパケットの受信時刻（図４の時刻Txrの候補となる時刻）を表すタイムスタンプが生成され、タイムスタンプ通知部２４２に出力される。
【０１１７】
ステップS２２３において、タイムスタンプ通知部２４２は、ステップS２２２の処理により付与されたタイムスタンプを、タイムスタンプ保持部２２２に通知（出力）する。
【０１１８】
ステップS２２４において、タイムスタンプ保持部２２２は、ステップS２２３の処理により通知されたタイムスタンプを保持（記憶）する。この時点では、まだフロー情報の判定が行われていないので、当該タイムスタンプは、確認応答パケットの受信時刻を表すタイムスタンプの候補としてタイムスタンプ保持部２２２に記憶される。
【０１１９】
ステップS２２５において、フロー特定部２２７は、ステップS２２１の処理で受信されたパケットは、フロー情報が登録されているパケットか否かを判定する。このとき、フロー特定部２２７は、MACパケット受信部２４３から供給されるパケットの、例えば送信元アドレス、およびパケットの種類をチェックし、フロー情報保持部２２６に登録されているフロー情報と比較する。当該パケットの送信元アドレスが受信端末１０２のアドレスであり、かつ当該パケットの種類がICMP Echo Replyである場合、当該パケットは、フロー情報が登録されているパケットであると判定され、処理は、ステップS２２７に進む。
【０１２０】
ステップS２２７において、フロー特定部２２７は、ステップS２２１の処理で受信したパケットを、RTTの計算のために送信されたデータパケットに対応する確認応答パケットとして、タイムスタンプ保持部２２２から当該パケットのタイムスタンプ（確認応答パケットの受信時刻：図４の時刻Txr）を取得し、そのタイムスタンプとともにRTT計測部２２８に出力し、確認応答パケットの受信を通知する。
【０１２１】
一方、ステップS２２５において、当該パケットは、フロー情報が登録されているパケットではないと判定された場合、処理は、ステップS２２６に進み、タイムスタンプ保持部２２２は、当該パケットのタイムスタンプを廃棄する。また、この場合、当該パケット（ステップS２２１の処理で受信したパケット）は、RTTの計算のために送信されたデータパケットに対応する確認応答パケットではないので、パケット受信部２２３に出力され、インタフェースBを介してアプリケーション２０１にパケットのデータが供給されることになる。
【０１２２】
このようにして確認応答パケットが受信される。
【０１２３】
次に、図１３のフローチャートを参照して、図１０のステップS１５４のRTT算出処理の詳細について説明する。
【０１２４】
ステップS２５１において、RTT計測部２２８は、データパケットの送信時刻（図４の時刻Txx）を表すタイムスタンプと、確認応答パケットの受信時刻（図４の時刻Txr）を表すタイムスタンプとを取得する。
【０１２５】
ステップS２５２において、RTT計測部２２８は、ステップS２５１の処理で取得したタイムスタンプと、確認応答パケットの記述内容に基づいて、例えば式（２）によりRTTを計算する。
【０１２６】
ステップS２５３において、RTT計測部２２８は、ステップS２５２の処理によるRTTの計算結果をコマンド制御部２２４に出力する。
【０１２７】
ステップS２５４において、コマンド制御部２２４は、ステップS２５３の処理により出力されたRTTの計算結果を、アプリケーション２０１に供給し、RTTの計算が完了したことを表す情報をアプリケーション２０１に出力する。
【０１２８】
このようにしてRTTが算出される。このようにすることで、送信装置１０１の内部での処理に要する時間である図４の時刻Ttsと時刻Txxの差分、および時刻Txrと時刻Tcの差分が含まれないようにして正確にRTTを計算することができる。
【０１２９】
また、アプリケーション２０１とデバイスドライバ２０３との間で、RTTの計算に関する処理以外の通信に伴うデータの送受信に用いられるインタフェース（インタフェースAまたはB）と、RTTの計算に関する処理以外の通信に伴うデータの送受信に用いられるインタフェース（インタフェースC）とがそれぞれ設けられるようにしたので、ユーザは、従来の送信装置１０１にMAC２０３（ネットワークインタフェースカード）およびそれに対応するデバイスドライバ２０２を組み込むだけで、正確なRTTの計算ができるように対処することができる。
【０１３０】
さらに、RTTの計算は、デバイスドライバ２０２により行われ、アプリケーション２０１は、デバイスドライバ２０２に対してRTTの計算の指令、および計算されたRTTの供給を受ける処理を行うだけでよいので、CPU、メモリなど送信装置１０１のリソースを有効に利用することができる。また、例えば、アプリケーション２０１に含まれる画像データの圧縮符号化などを行うプログラムにより、CPU、メモリなど送信装置１０１のリソースが多分に使用され、送信装置１０１の処理負荷が高い状態であっても、RTTの計算処理が遅延してしまうことはなく、その結果、より正確かつ適時にRTTを算出することが可能となる。
【０１３１】
なお、以上においては、送信装置１０１によりRTTの計算が行われる例について説明したが、受信装置１０２も送信装置１０１と同様の構成とし、受信装置１０２によりRTTの計算が行われるようにすることも勿論可能である。また、このようにして計算されるRTTは、上述した送信レートの制御や、ARQ（Automatic Repeat Request）、FEC（Forward Error Collection)などのエラー訂正に関する処理を動的に変更する際の指標（参考値）として用いることができる。
【０１３２】
ところで、本発明は、RTTの計算に限られるものではなく、上述したデータパケットの送信時刻（図４の時刻Txx）を表すタイムスタンプと、確認応答パケットの受信時刻（図４の時刻Txr）を表すタイムスタンプを用いることでより正確な伝送制御を行うことが可能となる。例えば、本発明をネットワークの輻輳を予測してデータ伝送のレート制御を行う通信システムに適用することも可能である。
【０１３３】
図１４は、別のデータ通信システムにおける、データ送信装置３３１およびデータ受信装置３３２の構成を示すブロック図である。
【０１３４】
データ送信装置３３１およびデータ受信装置３３２は、リアルタイム・データ転送プロトコルであるＲＴＰ（Real-time Transport Protocol）にしたがって、データの授受を行う。ＲＴＰは、例えば、映像と音声データを利用して遠隔会議を行うアプリケーションなどで利用されることを想定し、映像や音声データをリアルタイムに適した形で転送することを目的に設計されている。ＲＴＰにおいては、データが時間単位でパケットに分割されて送信される。また、ＲＴＰは、パケットロス対策や伝送時間保証などは行われていないＵＤＰ（User Datagram Protocol）タイプのプロトコルで、通常は、ＲＴＣＰ（ＲＴＰ Control Protocol）による通信状態レポートとセットで用いられる。
【０１３５】
また、ネットワーク３３３は、例えば、組織内で運営されているＬＡＮ（Local Area Network）であってもよいし、いわゆるインターネットのような不特定多数のネットワークが結合した、大規模なネットワークであってもよいし、または、所定の送信装置と受信装置を接続する専用回線であっても良い。
【０１３６】
データ送信装置３３１のデータ生成部３４１は、例えば、音声、画像、映像、テキストデータ、または、これらの混合したデータを生成し、データ送信部３４２に供給する。このとき生成されるデータ量は、送信レート制御部３４５によって制御される。
【０１３７】
データ送信部３４２は、データ生成部３４１から供給されたデータをＲＴＰパケットとして送信する場合、例えば、５秒間などの所定の時間ごとに、ＲＴＣＰのＳＲ（Sender Report）パケットを付加して、ネットワーク３３３を介して、データ受信装置３３２に送信する。ＳＲパケットとは、データ送信側の送受信統計のためのレポートであり、データ伝送の状況を示す情報が記載されている。
【０１３８】
ＳＲパケットには、ＮＴＰ（Network Time Protocol）タイムスタンプ、および、ＲＴＰタイムスタンプが含まれている。
【０１３９】
データ受信部３４３は、データ受信装置３３２から送信される、ＲＴＣＰにおけるＲＲ（Receiver Report）パケットを受信する。ＲＲパケットは、データ受信側からの受信統計のためのレポートである。
【０１４０】
レート制御命令受信部３４４は、ネットワーク３３３を介して、データ受信装置３３２から、レート制御命令を受信し、送信レート制御部３４５に供給する。
【０１４１】
送信レート制御部３４５は、レート制御命令受信部３４４から供給されたレート制御命令を基に、送信レート制御信号を生成し、データ生成部３４１に供給する。
【０１４２】
データ受信装置３３２のデータ受信部３５１は、ネットワーク３３３を介して、データ送信装置３３１から、ＳＲパケットおよびＲＴＰパケットを受信し、ＲＴＰパケットの、例えば、映像、音声、テキストなどのデータを、データ処理部３５２に供給するとともに、ＲＴＰパケットの受信時刻、タイムスタンプ、パケットサイズ、シーケンス番号など、輻輳の予測に必要な情報を、輻輳予測部３５３に供給する。
【０１４３】
データ処理部３５２は、データ受信部３５１から供給されたデータに対する処理を実行する。具体的には、データ処理部３５２は、供給されたデータに対して、例えば、復号処理、デスクランブル処理、表示処理、または、音声再生処理などを実行する。
【０１４４】
データ送信部３５４は、データ送信装置３３１から送信されたＲＴＰパケットに対して、ＲＲパケットを生成し、ネットワーク３３３を介して、データ送信装置３３１に送信する。
【０１４５】
輻輳予測部３５３は、データ受信部３５１から供給された情報を基に、データ伝送路の輻輳を予測し、その結果を基に、必要に応じて、データ受信レート（すなわち、データ受信装置３３２が受信するデータのデータ伝送レート）を設定して、レート制御命令を生成し、レート制御命令送信部３５５に供給する。
【０１４６】
レート制御命令送信部３５５は、輻輳予測部３５３から供給されたレート制御命令を、ＲＴＣＰのＡＰＰ（Application defined ＲＴＣＰ packet）として、ネットワーク３３３を介して、データ送信装置３３１に送信する。ＡＰＰとは、アプリケーション拡張用のパケットである。
【０１４７】
このようにレート制御が行われる通信システムにおいて、データ送信装置３３１またはデータ受信装置３３２に、例えば、上述したMAC（ネットワークインタフェースカード）２０３と、それに対応するデバイスドライバ２０２を実装し、データ送信装置３３１またはデータ受信装置３３２の内部の処理による伝送遅延を考慮して、ＲＴＰパケットのタイムスタンプを正確に取得できるようにすれば、より正確に輻輳を予測して適正なレート制御を行うことが可能となる。
【０１４８】
あるいはまた、本発明を利用して、ネットワークの帯域の測定の精度を高めることも可能である。
【０１４９】
例えば、サーバからクライアントに、インターネットを通じてリアルタイムに動画像データなどのストリーミングを行う場合、サーバからクライアント（ユーザ）までのネットワーク間において、最低の転送レートに合わせて転送しないと、ネットワークの容量を超えて転送することになり、パケットロスが生じてしまう。ここで、サーバからクライアントまでのネットワーク間における最低のリンクスピードをもつリンクを、ネットワークのボトルネックリンクと呼ぶ。
【０１５０】
すなわち、サーバは、ストリーミングを行うにあたり、ボトルネックリンクのスピードを推定する必要があり、このボトルネックリンクのスピードの推定方法として、例えば、パケットペア（Packet Pair）と呼ばれる手法がある。
【０１５１】
このパケットペア手法は、ボトルネックリンクの帯域予測方式の１つであり、例えば、図１５に示されるように、送信側（サーバ）から受信側（クライアント）に対して、等しいパケットサイズの２つのパケット１，２を、送信間隔を空けずに、いわゆるバックツーバック（back-to-back）で転送し、ネットワークの伝送遅延により、ボトルネックリンクの帯域を測定するものである。
【０１５２】
同図において、縦軸は時刻を示している。すなわち、時刻T1sは、パケット１の転送が終了するサーバ側の時刻を表し、時刻T1は、パケット１の受信を完了するクライアント側の時刻を表している。同様に、時刻T2sは、パケット２の転送が終了するサーバ側の時刻を表し、時刻T2は、パケット２の受信を完了するクライアント側の時刻を表している。
【０１５３】
サーバから、一方が他方の直後に続くようなペアのパケット１，２を、ノード１，２を介してクライアントに転送すると、ノード１とノード２の間でパケットが時間軸方向に伸ばされる。このノード１とノード２の間がボトルネックリンクである。
【０１５４】
クライアントは、１つ目のパケット１の到着時刻T1と２つ目のパケット２の到着時刻T2を測定することで、次式に従い、ボトルネックリンクの帯域Ｂを算出することができる。ここで、Ｓは、パケット１およびパケット２のサイズ（大きさ）を表している。
帯域Ｂ＝Ｓ／（T2−T1）
【０１５５】
このように帯域測定が行われる通信システムにおいて、クライアントに、例えば、上述したMAC（ネットワークインタフェースカード）２０３と、それに対応するデバイスドライバ２０２を実装して、クライアントの内部の処理による伝送遅延を考慮して、パケット１およびパケット２のタイムスタンプ（到着時刻）を正確に取得できるようにすれば、より正確な帯域測定を行うようにすることが可能となる。
【０１５６】
以上においては、動画像のデータが送受信される例について説明したが、送受信されるデータは動画像のデータに限られるものではない。また、ネットワーク１０３は、インターネットなどの有線設備を伴うネットワークに限られるものではなく、例えば、Bluetoothなどの無線通信技術により実現されるネットワークであってもよい。
【０１５７】
なお、上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、インターネットなどのネットワークや、リムーバブルメディア（例えば、図５のリムーバブルメディア１６１）などからなる記録媒体からインストールされる。
【０１５８】
なお、この記録媒体は、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク（フロッピディスク（登録商標）を含む）、光ディスク（CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む）、光磁気ディスク（MD（Mini-Disk）（登録商標）を含む）、もしくは半導体メモリなどよりなるリムーバブルメディア１６１により構成されるものだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROMや、記憶部に含まれるハードディスクなどで構成されるものも含む。
【０１５９】
本明細書において上述した一連の処理を実行するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【図面の簡単な説明】
【０１６０】
【図１】従来のRTTの計算方法の例を説明する図である。
【図２】図１の送信端末と受信端末において行われる処理の時刻を時系列に表した図である。
【図３】本発明を適用した通信システムの一実施形態に係る構成例を示す図である。
【図４】図１の送信装置と受信装置において行われる処理の時刻を時系列に表した図である。
【図５】図３の送信装置の内部構成例を示すブロック図である。
【図６】図５のCPUで実行されるソフトウェアの機能的構成例を示すブロック図である。
【図７】RTT計算処理を説明するフローチャートである。
【図８】RTT計算処理を説明するフローチャートである。
【図９】図５のＣＰＵで実行されるソフトウェアの別の機能的構成例を示すブロック図である。
【図１０】RTT計算処理の別の例を説明するフローチャートである。
【図１１】パケット送信処理の例を説明するフローチャートである。
【図１２】パケット受信処理の例を説明するフローチャートである。
【図１３】RTT算出処理の例を説明するフローチャートである。
【図１４】ネットワークの輻輳を予測して伝送レートの制御を行う通信システムの例を示すブロック図である。
【図１５】パケットペア手法を説明するための図である。
【符号の説明】
【０１６１】
１００  通信システム，  １０１  送信装置，  １０２  受信装置，  １０３  ネットワーク，  １５１  ＣＰＵ，  １５９  通信部，  １６１  リムーバブルメディア，  ２０１  アプリケーション，  ２０２  デバイスドライバ，  ２０３  MAC，  ２２１  パケット送信部，  ２２２  タイムスタンプ保持部，  ２２３  パケット受信部，  ２２４  コマンド制御部，  ２２５  パケット生成部，  ２２６  フロー情報登録部，  ２２７  フロー特定部，  ２２８  RTT計測部，  ２４２  タイムスタンプ通知部，  ２４４  タイムスタンプ付与部
【図１】
2006303750.tif 000004
【図２】
2006303750.tif 000005
【図３】
2006303750.tif 000006
【図４】
2006303750.tif 000007
【図５】
2006303750.tif 000008
【図６】
2006303750.tif 000009
【図７】
2006303750.tif 000010
【図８】
2006303750.tif 000011
【図９】
2006303750.tif 000012
【図１０】
2006303750.tif 000013
【図１１】
2006303750.tif 000014
【図１２】
2006303750.tif 000015
【図１３】
2006303750.tif 000016
【図１４】
2006303750.tif 000017
【図１５】
2006303750.tif 000018