(57)【特許請求の範囲】
【請求項１】
第１通信装置から第２通信装置への２つの送信データに対する前記第２通信装置からの応答メッセージのうち任意の２つの応答メッセージの前記第２通信装置により付された送信時刻情報の差を示す第１情報と、
前記２つの応答メッセージの前記第１通信装置への到着時刻の差を示す第２情報と、
前記第１通信装置から前記第２通信装置への送信データに対する、前記第１情報／第２情報取得対象としたものと同じ、あるいは異なる任意の２つの応答メッセージに対し、その２つの応答メッセージの間において前記第２通信装置へ到着した送信データの合計のデータ量を示す第３情報と、
その第３情報算出の対象とした２つの応答メッセージの前記第２通信装置により付された送信時刻情報の差を示す第４情報と、
に基づいて、前記第１情報と前記第２情報とに基づく前記第１通信装置と前記第２通信装置との間の時間換算係数と、前記第３情報と前記第４情報とに基づくレートと、を乗じて得られる値を算出することにより前記第２通信装置における到着レートを算出する算出部を備えることを特徴とする計測装置。
【請求項２】
前記算出部は、前記時間換算係数算出において、前記２つの応答メッセージ対を複数組について対応する前記第１情報／第２情報を取得し平均化することを特徴とする請求項１に記載の計測装置。
【請求項３】
前記第１情報／第２情報取得対象の２つの応答メッセージは、前記第３情報／第４情報取得対象とした応答メッセージの間隔よりも長い時間間隔のものを使用することを特徴とする請求項１に記載の計測装置。
【請求項４】
前記算出部は、時間換算係数の複数の候補の中から前記第１情報と前記第２情報との比に最も近い時間換算係数を特定し、特定した前記時間換算係数と前記レートとを乗じることにより前記到着レートを算出することを特徴とする請求項１〜３のいずれか一つに記載の計測装置。
【請求項５】
前記第１通信装置から前記第２通信装置への各送信データに対する前記第２通信装置からの応答メッセージについて、その応答確認された送信データに対応するシーケンス番号と、その応答メッセージの前記送信時刻情報および前記第１通信装置への到着時刻と、を記憶する記憶部を備え、
前記算出部は、前記記憶部の記憶内容に基づいて、前記第１情報、前記第２情報、前記第３情報および前記第４情報を算出することを特徴とする請求項１〜４のいずれか一つに記載の計測装置。
【請求項６】
自装置から宛先通信装置へデータの送信を行う通信装置において、そのデータ送信に対する前記宛先通信装置からの任意の２つの応答メッセージについて、前記宛先通信装置により付されたそれぞれの送信時刻情報の差を示す第１情報と、
前記２つの応答メッセージの自装置への到着時刻の差を示す第２情報と、
自装置から前記宛先通信装置への送信データに対する、前記第１情報／第２情報取得対象としたものと同じ、あるいは異なる任意の２つの応答メッセージに対し、その２つの応答メッセージの間において宛先通信装置へ到着した送信データの合計のデータ量を示す第３情報と、
その第３情報算出の対象とした２つの応答メッセージの前記宛先通信装置により付された送信時刻情報の差を示す第４情報と、
に基づいて、前記第１情報と前記第２情報とに基づく自装置と前記宛先通信装置との間の時間換算係数と、前記第３情報と前記第４情報とに基づくレートと、を乗じて得られる値を算出することにより前記宛先通信装置における到着レートを算出する算出部と、
前記算出部によって算出された到着レートに基づく、自装置から前記宛先通信装置への送信データの送出レートの制御を行う制御部と、
を備えることを特徴とする通信装置。
【請求項７】
第１通信装置と第２通信装置との間の通信を中継する中継装置であって、
前記第１通信装置から前記第２通信装置への送信データに対する前記第２通信装置からの任意の２つの応答メッセージにおける前記第２通信装置により付された送信時刻情報の差を示す第１情報と、
前記２つの応答メッセージの前記中継装置への到着時刻の差を示す第２情報と、
前記第１通信装置から前記第２通信装置への送信データに対する、前記第１情報／第２情報取得対象としたものと同じ、あるいは異なる任意の２つの応答メッセージに対し、その２つの応答メッセージの間において前記第２通信装置へ到着した送信データの合計のデータ量を示す第３情報と、
その第３情報算出の対象とした２つの応答メッセージの前記第２通信装置により付された送信時刻情報の差を示す第４情報と、
に基づいて、前記第１情報と前記第２情報とに基づく前記第１通信装置と前記第２通信装置との間の時間換算係数と、前記第３情報と前記第４情報とに基づくレートと、を乗じて得られる値を算出することにより前記第２通信装置における到着レートを算出する算出部と、
を備えることを特徴とする中継装置。
【請求項８】
第１通信装置から第２通信装置への送信データに対する前記第２通信装置からの応答メッセージのうち任意の２つの応答メッセージに対し、前記第２通信装置により付されたそれぞれの送信時刻情報の差を示す第１情報と、
前記２つの応答メッセージの前記第１通信装置への到着時刻の差を示す第２情報と、
前記第１通信装置から前記第２通信装置への送信データに対する、前記第１情報／第２情報取得対象としたものと同じ、あるいは異なる任意の２つの応答メッセージに対し、その２つの応答メッセージの間において前記第２通信装置へ到着した送信データの合計のデータ量を示す第３情報と、
その第３情報算出の対象とした２つの応答メッセージの前記第２通信装置により付された送信時刻情報の差を示す第４情報と、
に基づいて、前記第１情報と前記第２情報とに基づく前記第１通信装置と前記第２通信装置との間の時間換算係数と、前記第３情報と前記第４情報とに基づくレートと、を乗じて得られる値を算出することにより前記第２通信装置における到着レートを算出することを特徴とする計測方法。
【請求項９】
コンピュータに、
第１通信装置から第２通信装置への送信データに対する前記第２通信装置からの応答メッセージのうち任意の２つの応答メッセージに対し、前記第２通信装置により付されたそれぞれの送信時刻情報の差を示す第１情報と、
前記２つの応答メッセージの前記第１通信装置への到着時刻の差を示す第２情報と、
前記第１通信装置から前記第２通信装置への送信データに対する、前記第１情報／第２情報取得対象としたものと同じ、あるいは異なる任意の２つの応答メッセージに対し、その２つの応答メッセージの間において前記第２通信装置へ到着した送信データの合計のデータ量を示す第３情報と、
その第３情報算出の対象とした２つの応答メッセージの前記第２通信装置により付された送信時刻情報の差を示す第４情報と、
に基づいて、前記第１情報と前記第２情報とに基づく前記第１通信装置と前記第２通信装置との間の時間換算係数と、前記第３情報と前記第４情報とに基づくレートと、を乗じて得られる値を算出することにより前記第２通信装置における到着レートを算出する処理を実行させることを特徴とする計測プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計測装置、通信装置、中継装置、計測方法および計測プログラムに関する。
【背景技術】
【０００２】
インターネットなどのネットワークを介した通信において、効率的な通信を行うには、送信者はネットワークがどのぐらいのトラフィックを流す能力があるかを把握し、その能力内で送信することが重要となる。しかし、これを直接知る方法はないため、従来さまざまな計測手法が用いられてきた（たとえば、下記特許文献１〜４、非特許文献１〜２参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４８５３３１９号公報
【特許文献２】特許第４３６７５０５号公報
【特許文献３】特開２００６−０７４７７３号公報
【特許文献４】特開２００６−３４００８１号公報
【非特許文献】
【０００４】
【非特許文献１】Ｓ．Ｆｌｏｙｄ，Ｔ．Ｈｅｎｄｅｒｓｏｎ，Ａ．Ｇｕｒｔｏｖ、“Ｔｈｅ  ＮｅｗＲｅｎｏ  Ｍｏｄｉｆｉｃａｔｉｏｎ  ｔｏ  ＴＣＰ’ｓ  Ｆａｓｔ  Ｒｅｃｏｖｅｒｙ  Ａｌｇｏｒｉｔｈｍ”、ＲＦＣ２５８２、Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ（ＩＥＴＦ）、２００３年
【非特許文献２】Ｌａｗｒｅｎｃｅ  Ｓ．Ｂｒａｋｍｏ，Ｌａｒｒｙ  Ｌ．Ｐｅｔｅｒｓｏｎ、“ＴＣＰ  Ｖｅｇａｓ：Ｅｎｄ  ｔｏ  Ｅｎｄ  Ｃｏｎｇｅｓｔｉｏｎ  Ａｖｏｉｄａｎｃｅ  ｏｎ  ａ  Ｇｌｏｂａｌ  Ｉｎｔｅｒｎｅｔ”、ＩＥＥＥ  Ｊｏｕｒｎａｌ  ｏｎ  Ｓｅｌｅｃｔｅｄ  Ａｒｅａｓ  ｉｎ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ，Ｖｏｌ．１３，Ｎｏ．８、ｐｇ．１４６５−１４８０、１９９５年
【発明の概要】
【発明が解決しようとする課題】
【０００５】
たとえば、特許文献１においては、受信者において受信レートを観測し、これを送信者に通知する手法が開示されている。しかしながら、既存の通信手順にそのような送信帯域制御を導入する場合、受信側の通信機器においても測定を行うための機能を追加することになる。また、特許文献２においては、受信者が送信者に返送する確認応答の到着ペースやそのＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ：ラウンドトリップタイム）を計測することによって、受信者における受信レートを送信者が推定することが開示されている。この方法であれば、送信者が得られる情報だけでネットワークの能力を推定することができる。しかし、この計測方法は、確認応答が返送される戻りパスでのネットワークの状況の影響を受けやすいという問題がある。また、別の従来技術として、パケットのロスや伝播遅延の増加といった、ネットワークの能力を超えた、あるいは超えつつある兆候を監視しながら、徐々に送信レートを上げていくようなフィードバック制御が用いられている（特許文献３，４、非特許文献１，２）が、この手法は本質的に収束に時間がかかるのと、ネットワークの動的な変動に対応できない、という問題がある。
【０００６】
１つの側面では、本発明は、送信側でデータ転送手順に基づいて得られる情報だけで実施可能な到着レートの計測精度の向上を図ることで、適正な送信レートを推定できる計測装置、通信装置、中継装置、計測方法および計測プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、受信側における時刻の変化を、受信側が返信するメッセージに付与される送信時刻情報から取得する。
そして、受信側が送信時刻情報を実際の時間からどういう換算を行ったものか、を送信側でその時間当たり変化を監視しることで推定することで受信端末側での相対的な時間経過を送信側の時間尺度に換算する。
すなわち、
第１通信装置から第２通信装置へのデータ転送手順によるデータ転送において、
前記第２通信装置から前記第１通信装置への各応答メッセージにおける前記第２通信装置により付された送信時刻情報の、各応答メッセージにおける変化量を示す第１情報と、前記各応答メッセージの前記第１通信装置への到着時刻の差を示す第２情報と、に基づいて算出する、前記第１通信装置と前記第２通信装置との間の時間換算係数と、
前記第１通信装置から前記第２通信装置への送信データに対応する、ある２つの確認応答メッセージにより確認されたデータ転送の進行量を示す第３情報と、
前記２つの確認応答メッセージにおける、第２通信装置からの各応答メッセージの前記第２通信装置により付された送信時刻情報の差を示す第４情報と、
に基づき得られる前記第２通信装置の送信時刻情報の単位変化量あたりのデータレートに対し、前記時間換算係数を乗じることにより、前記第１通信装置において、前記第２通信装置における到着レートを算出する計測装置、通信装置、中継装置、計測方法および計測プログラムが提案される。
【発明の効果】
【０００８】
本発明の一側面によれば、送信側でデータ転送手順に基づいて得られる情報だけで実施可能な、戻りパスの影響を受けない到着レートの計測ができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態１にかかる通信システムの一例を示す図である。
【図２】図２は、実施の形態２にかかる通信システムの一例を示す図である。
【図３Ａ】図３Ａは、実施の形態２にかかるサーバの一例を示す図である。
【図３Ｂ】図３Ｂは、図３Ａに示したサーバにおける信号の流れの一例を示す図である。
【図３Ｃ】図３Ｃは、サーバのハードウェア構成の一例を示す図である。
【図４Ａ】図４Ａは、ＴＣＰのパケットヘッダのフォーマットの一例を示す図である。
【図４Ｂ】図４Ｂは、タイムスタンプのエンコード方式の一例を示す図である。
【図４Ｃ】図４Ｃは、タイムスタンプのエンコード方法の他の例を示す図である。
【図５】図５は、サーバとクライアントとの間の信号の送受信の一例を示す図である。
【図６】図６は、到着レートの変動の一例を示す図である。
【図７】図７は、実施の形態２にかかる記録テーブルおよび算出結果の一例を示す図である。
【図８】図８は、実施の形態３にかかるサーバに記憶されるテーブルの一例を示す図である。
【図９】図９は、実施の形態４にかかるサーバに記憶されるテーブルの一例を示す図である。
【図１０】図１０は、実施の形態８にかかる記録テーブルの一例を示す図である。
【図１１】図１１は、実施の形態８にかかる記録テーブルおよび算出結果の一例を示す図である。
【図１２】図１２は、サーバとクライアントとの間の信号の送受信の一例を示す図である。
【図１３Ａ】図１３Ａは、実施の形態２３にかかる中継装置の一例を示す図である。
【図１３Ｂ】図１３Ｂは、図１３Ａに示した中継装置における信号の流れの一例を示す図である。
【図１４】図１４は、コネクション管理テーブルの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下に図面を参照して、本発明にかかる計測装置、通信装置、中継装置、計測方法および計測プログラムの実施の形態を詳細に説明する。
【００１１】
（実施の形態１）
（実施の形態１にかかる通信システム）
図１は、実施の形態１にかかる通信システムの一例を示す図である。図１に示すように、実施の形態１にかかる通信システム１００は、第１通信装置１１０と、第２通信装置１２０と、計測装置１０１と、を含む。第１通信装置１１０および第２通信装置１２０は、互いに通信を行う各通信装置である。
【００１２】
計測装置１０１は、たとえば、第１通信装置１１０から送信される送信データの第２通信装置１２０における到着レートを計測する装置である。計測装置１０１は、第１通信装置１１０と通信可能な装置であってもよいし、第１通信装置１１０に設けられた装置であってもよい。計測装置１０１が第１通信装置１１０と通信可能な装置である場合は、計測装置１０１は、第１通信装置１１０が第２通信装置１２０から受信する応答メッセージに関する情報等を第１通信装置１１０から受信して到着レートを計測する。以下の説明においては、計測装置１０１が第１通信装置１１０に設けられた装置である場合について説明する。
【００１３】
送信データ１１１は、第１通信装置１１０から第２通信装置１２０へ送信される各送信データである。各々の送信データを区別するため、添字（１〜３、ｉ、ｊ、ｋ）を振っている。応答メッセージ１２１は、対応する送信データ１１１に対して第２通信装置１２０から第１通信装置１１０へ送信される応答メッセージである。同様に各々のメッセージを区別するため、添字（１〜３、ｉ、ｊ、ｋ）を振っている。
【００１４】
応答メッセージ１２１のそれぞれには、第２通信装置１２０によって送信時刻情報Ｔ２１が付される（各々のメッセージに付されている時刻情報について、対応する添字（１〜３、ｉ、ｊ、ｋ）を振っている）。送信時刻情報Ｔ２１は、対応する応答メッセージ１２１が第２通信装置１２０から送信される時刻に応じ付与されたものである。したがって、送信時刻情報Ｔ２１は、第２通信装置１２０の時間基準（内部時刻）に基づき生成された時刻情報である。計測装置１０１は、第１通信装置１１０が受信した応答メッセージ１２１から送信時刻情報Ｔ２１を取得することができる。送信時刻情報Ｔ２１と実際の時刻との関係は第２通信装置１２０の実装依存であり、第１通信装置１１０は第２通信装置１２０がその応答メッセージを送信した時刻を、その送信時刻情報Ｔ２１の値から直接得ることはできない。
【００１５】
到着時刻Ｔ１１は、応答メッセージ１２１各々の第１通信装置１１０における到着時刻である。各々の対応する応答メッセージと同一の添字（１〜３、ｉ、ｊ、ｋ）を振っている。ただし、到着時刻Ｔ１１は、第１通信装置１１０の時間基準に基づく送信時刻である。
【００１６】
図１に示す例では、計測装置１０１が、送信データ１１１−ｉ〜１１１−ｋの第２通信装置１２０における到着レートを計測する場合について説明する。この場合は、計測装置１０１は、送信データ１１１−ｉ、１１１−ｋに対する応答メッセージ１２１−ｉ、１２１−ｋの送信時刻情報Ｔ２１−ｉ，Ｔ２１−ｋを取得する。ここで、（Ｔ２１−ｋ）−（Ｔ２１−ｉ）（第４情報）は、送信データ１１１−ｉ〜１１１−ｋの到着にかかった、第２通信装置１２０の時間基準に基づく時間情報を示す。
【００１７】
また、計測装置１０１は、送信データ１１１−ｉ〜１１１−ｋ間の合計のデータ量Ｄ（第３情報）を取得する。伝播遅延あるいは応答遅延がある２者間でのデータ転送手順において、データ転送を効率的に行うには相手から確認応答を受けずに一定量データを送ることを許容する必要がある。また、その場合データ転送手順においては受け手の返信する確認応答がどの送信データに対する応答であるかを区別できる必要がある。そのような仕組みを実装しているデータ転送手順においては、確認応答に含まれる情報に、どのデータに対する応答かを示す情報があり、一般にこの情報を解析することにより、２つの応答メッセージ間でどれだけデータ量が届いているかを知ることが可能である。これにより、計測装置１０１は、Ｄ／（（Ｔ２１−ｋ）−（Ｔ２１−ｉ））によって、第２通信装置１２０の時間基準に基づく送信データ１１１−ｉ〜１１１−ｋの到着レートを算出することができる。
【００１８】
また、計測装置１０１は、第１通信装置１１０の時間基準と、第２通信装置１２０の時間基準と、の比（時間換算係数）を算出する。そのために、計測装置１０１は、たとえば送信データ１１１−１〜１１１−２に対する応答メッセージ１２１−１，１２１−２の送信時刻情報Ｔ２１−１，Ｔ２１−２を取得する。また、計測装置１０１は、応答メッセージ１２１−１，１２１−２の到着時刻Ｔ１１−１，Ｔ１１−２を取得する。そして、計測装置１０１は、取得した送信時刻情報Ｔ２１−１，Ｔ２１−２の差（第１情報）と、取得した到着時刻Ｔ１１−１，Ｔ１１−２の差（第２情報）と、の比（（Ｔ２１−２）−（Ｔ２１−１））／（（Ｔ１１−２）−（Ｔ１１−１））を算出することにより時間換算係数を算出する。
【００１９】
たとえば、計測装置１０１は、時間換算係数を得る対象とする応答メッセージについて、上記の例のように最初の２つを採用してもよいが、別の例として送信データ１１１−１，１１１−ｋの応答メッセージ１２１−１，１２１−ｋを対象とし時間換算係数を算出してもよい。このように、計測対象の期間よりも互いの送信間隔が長い各送信データについて時間換算係数を算出することにより、第１通信装置１１０と第２通信装置１２０との間の時間換算係数を精度よく算出することができる。
【００２０】
または、計測装置１０１は、前記時間換算係数を複数回計測しそれを逐次平均化してもよい。これにより、各応答メッセージ１２１の到着までの遅延量がばらついても、第１通信装置１１０と第２通信装置１２０との間の時間換算係数を精度よく算出することができる。
【００２１】
計測装置１０１は、たとえば、算出した送信データ１１１−ｉ〜１１１−ｋの第２通信装置１２０の時間基準に基づく送信時刻情報の単位変化量あたりの到着レートに、算出した第１通信装置１１０と第２通信装置１２０との間の時間換算係数を乗じる。これにより、第１通信装置１１０の時間基準に基づく送信データ１１１−ｉ〜１１１−ｋの到着レートを算出することができる。
【００２２】
たとえば、応答メッセージ１２１−１，１２１−ｋに基づく時間換算係数を用いる場合は、計測装置１０１は、Ｄ／（（Ｔ２１−ｋ）−（Ｔ２１−ｉ））に（（Ｔ２１−ｋ）−（Ｔ２１−１））／（（Ｔ１１−ｋ）−（Ｔ１１−１））を乗じることによって第１通信装置１１０の時間基準に基づく送信データ１１１−ｉ〜１１１−ｋの到着レートを算出することができる。
【００２３】
以上の算出手順は一例であり、実施に際し各数値の保持の方法や有効桁数あるいは演算ステップ数の最適化等を理由に算術的な変形をして用いることは任意である。
【００２４】
このように、実施の形態１にかかる計測装置１０１は、ある２つの応答メッセージにおける、受信側である第２通信装置１２０の側における到着レートを、送信側である第１通信装置１１０が受け取る応答メッセージ中の確認応答情報を解析して得られる応答されたデータ量と、応答メッセージで示された送信時刻情報の変化量、そして応答メッセージの送信時刻情報および到着時刻の関係から得られる時間換算係数を用いることにより、第２通信装置１２０の側に機能を追加しなくても、第１通信装置１１０において容易に取得可能な各情報に基づいて到着レートを計測することができる。
【００２５】
（実施の形態２）
送信時刻情報の具体的な実装形態として、タイムスタンプがある。相手の付与するタイムスタンプ情報から、受信側における時間経過を送信側で算出することで、データ到着レートの計測を、送信側のみの処理で計測可能で、かつ戻りパスのネットワーク状態を受けない（受けにくい）方法によって実現することができる。
【００２６】
タイムスタンプは、たとえばパケットの送信時刻に関する情報をパケットに埋め込むものであり、近年、データ転送プロトコルなどで、各メッセージ間の時間的前後関係の明確化や、ＲＴＴの計測を目的に、仕様として採用されている。
【００２７】
送信データがパケット化されて伝達され、その応答メッセージもパケットとして返信される構成において、データパケットに対する応答パケット（たとえばＡｃｋパケット）を受信側が迅速に返信することを仮定すれば、応答パケットの送信時刻をタイムスタンプから判断できれば、タイムスタンプの進み具合とＡｃｋされたデータ量の進み具合から、受信側における到着レートを推定することができる。
【００２８】
ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ：伝送制御プロトコル、ＲＦＣ７９３）においては、タイムスタンプ情報をパケットに含むことがオプションとしてＲＦＣ１３２３にて規定されている。このオプションにおいては、パケットを送信するときの時刻情報をプロトコル仕様で定められたフィールドサイズに合う形で数値化したタイムスタンプが埋め込まれる。また、このタイムスタンプは、ＴＣＰにおいてはパケット内のＴＣＰヘッダ内に埋め込まれる（たとえば図４Ａ〜図４Ｃ参照）。
【００２９】
ＲＴＴの計測に用いるために、ＲＦＣ１３２３の規定においては、パケットに対し送信時点に対応したタイムスタンプを格納して送信することに加え、応答パケットに、対応するデータパケットのタイムスタンプ値を格納することが求められている。このため、ＲＦＣ１３２３においては、パケット送信側のタイムスタンプを格納するフィールド（ＴＳｖａｌ）と、データパケットの受信側が、データパケットのタイムスタンプを、データパケットに対する応答パケットにエコーバックとして格納するフィールド（ＴＳｅｃｒ）を用意している（図４Ｂ，図４Ｃ参照）。
【００３０】
しかし、タイムスタンプは、一般的に、たとえば相手側に対して時間の前後関係を示し（たとえば値が単調増加）、エコーバックした値を使ってＲＴＴが所定の精度で計測可能であればよい。前記ＲＦＣ１３２３においても、タイムスタンプの値と時刻の関係については「実際の時間（経過）に対しほぼ比例した値」とだけ規定されている。このため、タイムスタンプの１単位がどの程度の時間経過を示すのかについては実装依存であるし、タイムスタンプの増加ペースが一定であることを保障するものでもない。
【００３１】
そこで、実施の形態２においては、データパケットの送信側が、データパケットに対する応答パケットに含まれるタイムスタンプの進み具合と、送信側における応答パケットの到着時刻の時間経過から、受信側のタイムスタンプの変化速度を計測する。近年の通信システムにおいては、各通信装置が水晶発振（クロック）の精度で時刻の基準を持つのが一般的である。このため、タイムスタンプは、タイムスタンプを生成するメカニズムに由来する変動要素（たとえばタイマ割り込みに対する応答時間の変動）はあるものの、長時間にわたり安定した増加ペースを維持する。
【００３２】
また、データパケットの受信側が応答パケットを送信してからデータパケットの送信側が応答パケットを受信するまでの片方向遅延も途中のキューイングディレイの変動で変化し得る。しかし、これについても一時的な変動はあっても長時間で平均化すれば計測値への影響は小さくなる。
【００３３】
そして、このような方法で応答パケットに含まれるタイムスタンプの変化率（クロック比）が分かれば、各応答パケットに含まれるタイムスタンプから時間の経過を知ることができる。これにより、２つの応答パケットについて、その送信時刻の差と、送信パケットのデータ量と、から受信側における到着レートを計測することが可能となる。
【００３４】
タイムスタンプがクロックに基づき生成されたものである場合は、クロック比は、原理的に同じ値が得られるはずであるため、クロック比の計測の誤差を減らすには計測時間を長くしてもよい。一方、到着レートに算出する際に使用する応答パケットの時間的間隔は、到着レートが絶えず変化することを想定しているため、平滑化されすぎると不都合である。このように、クロック比の算出に用いる応答パケットの対と、到着レートの算出に使用する応答パケットの対は要件が異なるため、それぞれ異なるパケット対に基づいてクロック比および到着レートを算出してもよい。
【００３５】
（実施の形態２にかかる通信システム）
図２は、実施の形態２にかかる通信システムの一例を示す図である。図２に示すように、実施の形態２にかかる通信システム２００は、サーバ２１１〜２１４と、クライアント２２１，２２２と、を含む。サーバ２１１〜２１４は、インターネット２０１に接続されている。クライアント２２１，２２２は、無線アクセス網２０２を介してインターネット２０１に接続されている。
【００３６】
一例として、サーバ２１１からクライアント２２１へデータパケットを送信する場合において、図１に示した計測装置１０１および第１通信装置１１０は、たとえばサーバ２１１に適用することができる。また、図１に示した第２通信装置１２０は、たとえばクライアント２２１に適用することができる。ここでは、サーバ２１１において、サーバ２１１からクライアント２２１へのデータパケットのクライアント２２１における到着レートを計測する場合について説明する。また、サーバ２１１は、到着レートの計測レートに応じて、クライアント２２１へのデータパケットの送出レートを制御する。
【００３７】
サーバ２１１からクライアント２２１へのデータパケットは、たとえばＴＣＰなどを用いて伝送される。
【００３８】
（サーバ）
図３Ａは、実施の形態２にかかるサーバの一例を示す図である。図３Ｂは、図３Ａに示したサーバにおける信号の流れの一例を示す図である。図２に示したサーバ２１１は、たとえば図３Ａ，図３Ｂに示すサーバ３００によって実現することができる。サーバ３００は、リンクレイヤ処理部３１０と、受信データ組立部３２１と、受信データバッファ３２２と、通信アプリケーション実行部３３０と、送信データバッファ３４１と、送信パケット構築部３４２と、送信キュー３４３と、を備える。
【００３９】
また、サーバ３００は、Ａｃｋ情報解析部３５１と、Ａｃｋ情報記録部３５２と、クロック比計測部３５３と、相手到着レート計測部３５４と、を備える。また、サーバ３００は、送信遅延変動計測部３５５と、ＲＴＴ計測部３５６と、送出レート制御部３５７と、再送制御部３５８と、応答待バッファ３５９と、を備える。
【００４０】
リンクレイヤ処理部３１０は、リンクレイヤ受信部３１１と、リンクレイヤ送信部３１２と、を備える。リンクレイヤ受信部３１１は、ネットワーク（たとえば図２のインターネット２０１）からのパケットを受信する。リンクレイヤ受信部３１１が受信するパケットには、たとえば、他の通信装置（たとえば図２のクライアント２２１）からのデータパケットや、サーバ３００が送信したデータパケットに対する他の通信装置（たとえば図２のクライアント２２１）からの応答パケットが含まれる。リンクレイヤ受信部３１１は、受信したパケットを受信データ組立部３２１およびＡｃｋ情報解析部３５１へ出力する。リンクレイヤ送信部３１２は、送信キュー３４３に格納されたパケットを順次読み出してネットワーク（たとえば図２のインターネット２０１）へ送信する。
【００４１】
受信データ組立部３２１は、リンクレイヤ受信部３１１から出力されたパケットのうちのデータパケットを取得する。そして、受信データ組立部３２１は、取得したデータパケットの組立を行い、組立により得られたデータを受信データバッファ３２２へ出力する。受信データバッファ３２２は、受信データ組立部３２１から出力されたデータを一次格納し、格納したデータを順次、通信アプリケーション実行部３３０へ出力する。
【００４２】
通信アプリケーション実行部３３０は、通信アプリケーションを実行する。通信アプリケーションは、通信相手とのデータ授受を行う。その一環として、受信データバッファ３２２から出力されたデータに基づく処理や、他の通信装置へ送信するためのデータを生成して送信データバッファ３４１へ出力する処理を行う。送信データバッファ３４１は、通信アプリケーション実行部３３０から出力されたデータを一次格納し、格納したデータを順次、送信パケット構築部３４２へ出力する。
【００４３】
送信パケット構築部３４２は、送信データバッファ３４１から出力されたデータに基づいて、通信相手へ送信するためのパケットを構築する。そして、送信パケット構築部３４２は、構築したパケットを送信キュー３４３へ格納する。また、送信パケット構築部３４２によって送信キュー３４３へ格納されるパケットのレートは送出レート制御部３５７によって制御される。
【００４４】
再送制御部３５８は、Ａｃｋ情報解析部３５１から出力されたＡｃｋ／ＳＡＣＫ（Ｓｅｌｅｃｔｉｖｅ  Ａｃｋ；データ中途に対する部分的な確認応答を伴うＡｃｋ）情報に基づいて、応答待バッファ３５９から送信キュー３４３へのパケットの読み出しを行うことによって再送制御を行う。
【００４５】
応答待バッファ３５９は、サーバ３００が送信済みのパケットを一時的に格納する。そして、応答待バッファ３５９は、再送制御部３５８からの制御に基づいて、格納しているパケットのうちの、Ａｃｋ情報解析部３５１から出力されたＡｃｋ番号に対応するパケットを送信キュー３４３へ格納する。また、応答待バッファ３５９は、サーバ３００からのパケットの送信時刻をＡｃｋ情報記録部３５２およびＲＴＴ計測部３５６へ出力する。
【００４６】
Ａｃｋ情報解析部３５１は、リンクレイヤ受信部３１１から出力されたパケットのうちの応答パケットを取得し、取得した応答パケットの解析を行う。そして、Ａｃｋ情報解析部３５１は、取得した応答パケットのうちのＡｃｋパケットの内容を示すＡｃｋ情報をＡｃｋ情報記録部３５２へ出力する。また、Ａｃｋ情報解析部３５１は、取得した応答パケットを示すＡｃｋ／ＳＡＣＫ情報を再送制御部３５８へ出力する。また、Ａｃｋ情報解析部３５１は、取得した応答パケットのうちのＡｃｋパケットのＡｃｋ番号を応答待バッファ３５９へ出力する。
【００４７】
Ａｃｋ情報記録部３５２は、Ａｃｋ情報解析部３５１から出力されたＡｃｋ情報を記録テーブル３５２ａに記録する。記録テーブル３５２ａは、サーバ３００のメモリに記憶されるテーブルである（たとえば図７参照）。
【００４８】
また、Ａｃｋ情報記録部３５２は、記録テーブル３５２ａに記録されたＡｃｋ情報のうちの、２つのＡｃｋパケットについての各Ａｃｋ情報をクロック比計測部３５３へ出力する。また、Ａｃｋ情報記録部３５２は、複数組のＡｃｋパケットについての各Ａｃｋ情報をクロック比計測部３５３へ出力してもよい。また、Ａｃｋ情報記録部３５２は、記録テーブル３５２ａに記録されたＡｃｋ情報のうちの、計測対象の期間における複数のＡｃｋパケットについてのＡｃｋ情報を相手到着レート計測部３５４へ出力する。
【００４９】
また、Ａｃｋ情報記録部３５２は、記録テーブル３５２ａに記録されたＡｃｋ情報のうちの、計測対象の期間における複数のＡｃｋパケットについてのＡｃｋ情報（データパケットの送信時刻を含む）を送信遅延変動計測部３５５へ出力してもよい。
【００５０】
また、Ａｃｋ情報記録部３５２は、応答待バッファ３５９から出力された送信時刻を、該当する送信データのＡｃｋパケットと対応付けて記録テーブル３５２ａに記録する。または、Ａｃｋ情報記録部３５２は、ＲＴＴ計測部３５６から出力されたＲＴＴを、該当する送信データのＡｃｋパケットと対応付けて記録テーブル３５２ａに記録してもよい。
【００５１】
クロック比計測部３５３は、Ａｃｋ情報記録部３５２から出力された２つのＡｃｋパケットについての各Ａｃｋ情報、または複数組のＡｃｋパケットについての各Ａｃｋ情報に基づいて、サーバ３００とクライアント２２１の間のクロック比（時間換算係数）を計測する。そして、クロック比計測部３５３は、計測したクロック比を相手到着レート計測部３５４へ出力する。
【００５２】
相手到着レート計測部３５４は、Ａｃｋ情報記録部３５２から出力された複数のＡｃｋパケットについての各Ａｃｋ情報と、クロック比計測部３５３から出力されたクロック比と、に基づいてサーバ３００における到着レートを計測する。そして、相手到着レート計測部３５４は、計測した到着レートを送出レート制御部３５７へ出力する。
【００５３】
送信遅延変動計測部３５５は、Ａｃｋ情報記録部３５２から出力された計測対象の期間における複数のＡｃｋパケットについてのＡｃｋ情報（データパケットの送信時刻を含む）に基づいて、サーバ３００からの送信データの遅延時間の変動を計測する。そして、送信遅延変動計測部３５５は、遅延時間の変動の計測結果を送出レート制御部３５７へ出力する。
【００５４】
ＲＴＴ計測部３５６は、応答待バッファ３５９から出力された送信時刻に基づくＲＴＴを計測する。そして、ＲＴＴ計測部３５６は、計測したＲＴＴをＡｃｋ情報記録部３５２および送出レート制御部３５７へ出力する。
【００５５】
送出レート制御部３５７は、相手到着レート計測部３５４から出力された到着レートに基づいて、サーバ３００からのパケットの送出レートを制御する。具体的には、送出レート制御部３５７は、送信パケット構築部３４２および再送制御部３５８を制御することによって送出レートを制御する。
【００５６】
なお、実施の形態２においては、サーバ３００の送信遅延変動計測部３５５およびＲＴＴ計測部３５６を省いた構成としてもよい。
【００５７】
（サーバのハードウェア構成）
図３Ｃは、サーバのハードウェア構成の一例を示す図である。図３Ａ，図３Ｂに示したサーバ３００は、たとえば図３Ｃに示す通信装置３８０によって実現することができる。通信装置３８０は、ＣＰＵ３８１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、ＲＡＭ３８２（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ランダムアクセスメモリ）と、不揮発メモリ３８３と、通信インタフェース３８４と、を備える。ＣＰＵ３８１、ＲＡＭ３８２、不揮発メモリ３８３および通信インタフェース３８４は、バス３８９によって接続される。
【００５８】
ＣＰＵ３８１は、通信装置３８０の全体の制御を司る。ＲＡＭ３８２は、ＣＰＵ３８１のワークエリアとして使用される。不揮発メモリ３８３は、たとえば磁気ディスク、光ディスク、フラッシュメモリなどの不揮発メモリである。不揮発メモリ３８３には、通信装置３８０を動作させる各種のプログラムが記憶されている。不揮発メモリ３８３に記憶されたプログラムは、ＲＡＭ３８２にロードされてＣＰＵ３８１によって実行される。
【００５９】
通信インタフェース３８４は、たとえば有線によって通信装置３８０の外部（たとえばクライアント２２１）との間で通信を行う通信インタフェースである。通信インタフェース３８４は、ＣＰＵ３８１によって制御される。
【００６０】
図３Ａ，図３Ｂに示したリンクレイヤ処理部３１０は、たとえば通信インタフェース３８４によって実現することができる。図３Ａ，図３Ｂに示した受信データ組立部３２１、通信アプリケーション実行部３３０および送信パケット構築部３４２は、たとえばＣＰＵ３８１によって実現することができる。
【００６１】
図３Ａ，図３Ｂに示したＡｃｋ情報解析部３５１、Ａｃｋ情報記録部３５２、クロック比計測部３５３、相手到着レート計測部３５４、送信遅延変動計測部３５５およびＲＴＴ計測部３５６は、たとえばＣＰＵ３８１によって実現することができる。図３Ａ，図３Ｂに示した送出レート制御部３５７および再送制御部３５８は、たとえばＣＰＵ３８１によって実現することができる。
【００６２】
図３Ａ，図３Ｂに示した受信データバッファ３２２、送信データバッファ３４１、送信キュー３４３および応答待バッファ３５９は、たとえばＲＡＭ３８２によって実現することができる。図３Ａ，図３Ｂに示した記録テーブル３５２ａは、たとえばＲＡＭ３８２に記憶される。
【００６３】
また、図１に示した計測装置１０１の到着レートを算出する算出部は、たとえばＣＰＵ３８１によって実現することができる。
【００６４】
（ＴＣＰのパケットヘッダのフォーマット）
図４Ａは、ＴＣＰのパケットヘッダのフォーマットの一例を示す図である。ＴＣＰにおいては、たとえば図４Ａに示すパケットヘッダのフォーマット４１０が定義されている。たとえば、フォーマット４１０の“Ｓｅｑｕｅｎｃｅ  Ｎｕｍｂｅｒ”には、データパケットを送信する側によってデータパケットのシーケンス番号が格納される。
【００６５】
一方、データパケットを受信した側は、フラグ“ＡＣＫ”をセットし、受信済みのデータパケットのシーケンス番号を“Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ  Ｎｕｍｂｅｒ”に格納した応答パケットを返送する。なお、ＴＣＰは双方向のデータ通信をサポートするため、フラグ“ＡＣＫ”がセットされないパケットは特殊なケースに限られる。また、パケットヘッダ上のシーケンス番号は、初期値がランダムな値で決まるため、データパケットの本来の順序に対して初期値分多い値となる。ただし、シーケンス番号の差分に基づく処理においては初期値を無視することができる。
【００６６】
また、データパケットを受信した側は、たとえば、送信する応答パケットの“Ｏｐｔｉｏｎｓ”のオプション領域４１１に、所定のエンコード方式（たとえば図４Ｂ，図４Ｃ参照）でタイムスタンプを格納する。
【００６７】
（タイムスタンプのエンコード方式）
図４Ｂは、タイムスタンプのエンコード方式の一例を示す図である。データパケットを受信した側が応答パケットのオプション領域４１１に格納するタイムスタンプには、たとえば図４Ｂに示すエンコード方式４２０を用いることができる。“ＴＳｖａｌ”は、パケットを送信する側が付与するタイムスタンプである。“ＴＳｅｃｒ”は、受信したパケットに格納されたタイムスタンプ（ＴＳｖａｌ値）であり、相手にエコーバックするタイムスタンプである。
【００６８】
図４Ｃは、タイムスタンプのエンコード方法の他の例を示す図である。データパケットを受信した側が応答パケットのオプション領域４１１に格納するタイムスタンプには、たとえば図４Ｃに示すエンコード方式４３０を用いてもよい。
【００６９】
オプション領域４１１にタイムスタンプのみが格納される場合は、エンコード方式４３０のようにＮＯＰ（Ｎｏ  Ｏｐｅｒａｔｉｏｎ）オプションを併用し、タイムスタンプがワード境界をまたがらないように位置の調整を行うようにしてもよい。これにより、データのアライメントを取ることができる。
【００７０】
（サーバとクライアントとの間の信号の送受信）
図５は、サーバとクライアントとの間の信号の送受信の一例を示す図である。図５において、実線矢印によって示すＤａｔａ（ｘ）は、サーバ２１１からクライアント２２１へ送信されるｘ番目のデータパケットである。点線矢印によって示すＡｃｋ（ｘ）は、Ｄａｔａ（ｘ）に対するクライアント２２１からサーバ２１１への応答パケットである。
【００７１】
ＴＳｖ（ｘ）は、クライアント２２１によってＡｃｋ（ｘ）に付与されたタイムスタンプである。したがって、ＴＳｖ（ｘ）は、クライアント２２１における時間基準（クロック）に基づく時間を示す。
【００７２】
ΔＴａｓ（ｉ，ｊ）は、クライアント２２１によるＡｃｋ（ｉ）の送信時刻と、クライアント２２１によるＡｃｋ（ｊ）の送信時刻と、の差である（ｉ＜ｊ）。ただし、サーバ２１１はΔＴａｓ（ｉ，ｊ）を直接取得することができない。このため、サーバ２１１は、ΔＴａｓ（ｉ，ｊ）に近い値としてΔＴａｒ（ｉ，ｊ）を用いる。ΔＴａｒ（ｉ，ｊ）は、Ａｃｋ（ｉ）のサーバ２１１への到着時刻と、Ａｃｋ（ｊ）のサーバ２１１への到着時刻と、の差である。
【００７３】
サーバ２１１は、到着したＡｃｋ（ｉ）およびＡｃｋ（ｊ）に付された各タイムスタンプの差としてＴＳｖ（ｊ）−ＴＳｖ（ｉ）を算出する。そして、サーバ２１１は、算出したＴＳｖ（ｊ）−ＴＳｖ（ｉ）をΔＴａｒ（ｉ，ｊ）で除算する。これにより、クライアント２２１のクロックに対するサーバ２１１のクロックの比（クロック比）を算出することができる。
【００７４】
また、サーバ２１１は、ある程度の時間差を有する複数組のＡｃｋ（ｉ）およびＡｃｋ（ｊ）に基づいて複数のクロック比を算出し、算出した複数のクロック比を平均化したクロック比を算出してもよい。平均化には、単なる算出平均を用いてもよいし、ＥＷＭＡ（Ｅｘｐｏｎｅｎｔｉａｌｌｙ  Ｗｅｉｇｈｔｅｄ  Ｍｏｖｉｎｇ  Ａｖｅｒａｇｅ）のような漸化式による平均化を用いてもよい。
【００７５】
Ａｃｋ（ｘ）の到着遅延時間の変動は、高々ＲＴＴより短い時間である。このため、Ａｃｋ（ｘ）の到着遅延時間の変動があっても、ＲＴＴが概ね安定していれば、複数のクロック比を平均化することによって、クロック比を精度よく算出することができる。
【００７６】
また、サーバ２１１は、計測対象のデータパケット群の合計のデータ量を、計測対象のデータパケットのうちの最初と最後のデータパケットに対する各応答パケットのタイムスタンプの差で除算したレートを算出する。計測対象のデータパケット群の合計のデータ量は、たとえば、計測対象のデータパケットのうちの最初と最後のデータパケットに対する各応答パケットのＡｃｋ番号の差（または差＋１）に、１つのデータパケットのデータ量を乗算することによって得ることができる。
【００７７】
そして、サーバ２１１は、算出したレートに、算出したクロック比を乗じることにより、サーバ２１１における時間基準に基づく、計測対象のデータパケット群のクライアント２２１における到着レートを算出することができる。
【００７８】
（到着レートの変動）
図６は、到着レートの変動の一例を示す図である。図６において、横軸は経過時間を示し、縦軸はサーバ２１１からクライアント２２１へのデータパケットの到着レートを示している。物理帯域上限６１０は、サーバ２１１からクライアント２２１へのデータパケットの伝送における物理帯域の上限である。到着レート６０１は、ウィンドウサイズを十分に小さくした場合に計測される到着レートである。到着レート６０１に示すように、ウィンドウサイズが小さい場合は、ミクロには図６に示すようになる。
【００７９】
計測結果６０２は、ウィンドウサイズをある程度の大きさを有するΔＷ１とした場合に計測される到着レートである。計測結果６０２に示すように、ウィンドウサイズがある程度の大きさを有する場合は、物理帯域上限６１０が計測可能になる。
【００８０】
計測結果６０３は、ウィンドウサイズをΔＷ２（＞ΔＷ１）とした場合に計測される到着レートである。計測結果６０３に示すように、ウィンドウサイズがさらに大きい場合は、物理帯域上限６１０に対する検出感度が鈍くなる。
【００８１】
計測結果６０４は、ウィンドウサイズをＲＴＴ相当の幅とした場合に計測される到着レートである。計測結果６０４に示すように、ウィンドウサイズをＲＴＴ相当の幅とする場合は、低いレートしか計測できなくなる。
【００８２】
他トラフィック６２０は、サーバ２１１からクライアント２２１へのデータパケットの帯域を圧迫する他トラフィックである。計測結果６０５は、ウィンドウサイズをある程度の大きさを有するΔＷ３とした場合に計測される到着レートである。計測結果６０５に示すように、ウィンドウサイズがある程度の大きさを有する場合は、到着レートのピーク値は他トラフィック６２０の分だけ下がって計測される。
【００８３】
（実施の形態２にかかる記録テーブルおよび算出結果）
図７は、実施の形態２にかかる記録テーブルおよび算出結果の一例を示す図である。Ａｃｋ情報記録部３５２は、たとえば図７に示す記録テーブル７１０を記録する。記録テーブル７１０においては、各応答パケットについて、到着時刻と、Ａｃｋ番号と、ＴＳ（ＴＳｖａｌ）値と、が対応付けられている。図７に示す例では到着時刻を秒単位で示しているが、これは実装依存であり、たとえばサーバ２１１の内部クロックなどに置き換えてもよい。
【００８４】
また、図７に示す例では、記録テーブル７１０のエントリ数は３２である。ただし、記録テーブル７１０のエントリ数は過去に遡って参照したいＡｃｋ情報が残っている最小限の値でもよい。実装の容易性から、記録テーブル７１０のエントリ数は２のべき乗としてもよい。また、Ａｃｋ情報記録部３５２は、記録テーブル７１０のエントリがすべて埋まると、古いエントリから上書きしていく。
【００８５】
図７に示す算出結果７２０は、記録テーブル７１０に基づくクロック比の算出結果である。なお、算出結果７２０は、各エントリでの算出結果を示しているものであり、各エントリに対応する算出結果７２０のすべてが保持されなくてもよい。図７に示す例では、過去１６エントリ分のＡｃｋ受信情報との差でクロック比を計測する場合について説明する。算出結果７２０は、到着時刻（ｊ）−到着時刻（ｊ−１６）と、ＴＳ（ｊ）−ＴＳ（ｊ−１６）と、クロック比と、平均クロック比と、を示している。
【００８６】
たとえば、サーバ２１１は、Ａｃｋ（３１）とＡｃｋ（１５）について（ｊ＝１６）、到着時刻（３１）−到着時刻（１５）＝０．４０５１０８−０．３０４２６２＝０．１００８４６を算出する。また、サーバ２１１は、ＴＳ（３１）−ＴＳ（１５）＝３９０６２−３９０１２＝５０を算出する。そして、サーバ２１１は、Ａｃｋ（３１）とＡｃｋ（１５）に基づくクロック比として５０／０．１００８４６≒４９５．８を算出する（小数点第２位以下四捨五入）。
【００８７】
同様に、サーバ２１１は、Ａｃｋ（３０）とＡｃｋ（１４）に基づくクロック比、Ａｃｋ（２９）とＡｃｋ（１３）に基づくクロック比、…と算出し、算出した各クロック比を平均化する。図７に示す例では過去に遡るエントリ数を固定値としているが、単位時間あたりパケット送信量が増えればＡｃｋ受信量も増えるので、Ａｃｋパケットの情報を記録する頻度をデータ送信量に応じて間引いてもよい。
【００８８】
また、図７に示す例では過去のクロック比を単純に平均化しているが、上述のようにＥＷＭＡのような漸化式による平均化を用いてもよい。また、スライディングウィンドウ的な手法でクロック比を計算するのでなく、最初のＡｃｋパケットからの経過時間とＴＳ変化量の比を取ってもよい。すなわち、集計時間を長くすることにより、比を取る際の変動成分を小さくすることができる。
【００８９】
このように、実施の形態２によれば、クライアント２２１の側に機能を追加しなくても、サーバ２１１においてクライアント２２１における到着レートを計測することが可能になる。また、その計測方法の調整により計測するデータレートの利用形態に合った計測結果を得ることができる。
【００９０】
また、この計測結果を、データ転送を行うプロトコルの送出レートの制御に用いることにより、クライアント２２１への可用帯域の推定や可用帯域の空きの検出を行うことができる。このため、送出レートを可用帯域にあわせてより適切に調整することが可能となり、通信スループットの向上やネットワークの利用効率の向上を図ることができる。
【００９１】
（実施の形態３）
実施の形態３について、実施の形態２と異なる部分について説明する。クロックが水晶発振により生成され、たとえば１［ｍｓ］周期や１０［ｍｓ］周期といった一定の時間間隔をクロックで得てカウントを増やすことによりタイマが実装されている場合は、想定されるクロック比は限られた値に限定される。
【００９２】
そこで、実施の形態３においては、クロック比の複数の候補を示すクロック比テーブル８００を用いて、算出したクロック比にもっとも近い値に置換することにより、クロック比を精度よく推定することができる。
【００９３】
（実施の形態３にかかるサーバに記憶されるテーブル）
図８は、実施の形態３にかかるサーバに記憶されるテーブルの一例を示す図である。実施の形態３にかかるサーバ２１１のメモリ（たとえば図３ＣのＲＡＭ３８２）には、たとえば図８に示すクロック比テーブル８００が記憶される。クロック比テーブル８００においては、クロック比の複数の候補について、クロック換算係数およびコメントが対応付けられている。なお、クロック比テーブル８００からコメントを省いてもよい。
【００９４】
クロック換算係数は、タイムスタンプ変化量を時間に換算する係数である。図８に示すクロック比テーブル８００では、プロセッサによる算術演算が除算より乗算の方が高速に実行できる場合が多いことを想定し、クロック換算係数はクロック比の逆数としている。また、クロック比テーブル８００の各値は、プロセッサにおける整数演算で実行しやすいように、２のべき乗になる値（図８に示す例では１０２４）でスケーリングされている。
【００９５】
サーバ２１１は、クロック比テーブル８００が示すクロック比の候補の中から、算出したクロック比に最も近いクロック比を特定する。そして、サーバ２１１は、特定したクロック比に対応するクロック換算係数を、算出したクライアント２２１の時間基準に基づくレートに乗算し、乗算結果を１０２４で除算する。これにより、サーバ２１１に基づく到着レートを算出することができる。
【００９６】
たとえば、サーバ２１１は、算出したクロック比が９１０であった場合は、クロック比テーブル８００が示すクロック比の候補の中で９１０に最も近い１０２４を特定する。そして、サーバ２１１は、クロック比テーブル８００において１０２４に対応するクロック換算係数である１０２４を、算出したクライアント２２１の時間基準に基づくレートに乗算し、乗算結果を１０２４で除算する。
【００９７】
このように、実施の形態３にかかるサーバ２１１は、クロック比（時間換算係数）の複数の候補の中から、算出したクロック比に最も近いクロック比を特定する。そして、サーバ２１１は、特定したクロック比と、クライアント２２１の時間基準に基づくレートと、を乗じることにより到着レートを算出することができる。これにより、クロック比を精度よく計測し、クロックに基づく到着レートを精度よく計測することができる。
【００９８】
（実施の形態４）
実施の形態４について、実施の形態３と異なる部分について説明する。
【００９９】
（実施の形態４にかかるサーバに記憶されるテーブル）
図９は、実施の形態４にかかるサーバに記憶されるテーブルの一例を示す図である。実施の形態４にかかるサーバ２１１のメモリ（たとえば図３ＣのＲＡＭ３８２）には、たとえば図９に示すクロック比テーブル８００が記憶される。図９に示すクロック比テーブル８００においては、図８に示した各項目に加えて、クロック比の複数の候補について範囲（ｍｉｎ）および範囲（ｍａｘ）が対応付けられている。範囲（ｍｉｎ）および範囲（ｍａｘ）は、対応する候補のクロック比を中央値とする範囲である。
【０１００】
サーバ２１１は、クロック比テーブル８００が示す範囲（ｍｉｎ）および範囲（ｍａｘ）の中から、算出したクロック比が含まれる範囲を特定する。そして、サーバ２１１は、特定した範囲に対応するクロック換算係数を、算出したクライアント２２１の時間基準に基づくレートに乗算し、乗算結果を１０２４で除算する。これにより、サーバ２１１に基づく到着レートを算出することができる。
【０１０１】
また、サーバ２１１は、算出したクロック比がいずれの範囲にも含まれていない場合は、たとえばクロック比計測エラーとして処理する。この場合は、サーバ２１１は、クロック比に基づく到着レートを用いた送出レートの制御を行わない。
【０１０２】
このように、実施の形態４にかかるサーバ２１１は、算出したクロック比がクロック比の複数の範囲の中に含まれていない場合は、算出したクロック比に基づく到着レートを用いた送出レートの制御を行わない。これにより、たとえばクライアント２２１が想定しえないクロックを用いていた場合に、不適切なクロック比に基づく精度の低い到着レートを用いて送出レートを制御して伝送効率が低下することを避けることができる。
【０１０３】
（実施の形態５）
実施の形態５について、実施の形態２と異なる部分について説明する。実施の形態５にかかるサーバ２１１は、クロック比を複数回計測し、複数回計測したクロック比の変動量を算出する。クロック比の変動量の算出には、たとえば分散、標準偏差、平均偏差などを用いることができる。
【０１０４】
サーバ２１１は、算出した変動量が所定の大きさ以上である場合は、たとえばクロック比計測エラーとして処理する。この場合は、サーバ２１１は、クロック比に基づく到着レートの計測を行わない。これにより、たとえばクライアント２２１のタイムスタンプが一定の増加ペースを示さない（すなわち時間尺度で使えない）場合に、クライアント２２１のタイムスタンプに基づいて到着レートを計測してしまうことを避けることができる。
【０１０５】
このように、実施の形態５にかかるサーバ２１１は、クロック比（時間換算係数）のばらつきが所定の大きさ以上である場合は、クロック比に基づく到着レートを用いた送出レートの制御を行わない。これにより、精度の低いクロック比に基づく精度の低い到着レートを用いて送出レートを制御して伝送効率が低下することを避けることができる。
【０１０６】
（実施の形態６）
実施の形態６について、実施の形態２と異なる部分について説明する。実施の形態６にかかるサーバ２１１は、クロック比の計測をクライアント２２１との通信開始から行い、クロック比を一度計測したらクロック比の計測を止める。そして、サーバ２１１は、計測したクロック比を、以降の複数回の到着レートの算出に用いる。これにより、サーバ２１１におけるクロック比の算出のための処理量を低減することができる。
【０１０７】
たとえば通信相手が企業内網の端末に限られるなど、相手となる通信端末（サーバやゲートウェイを含む）におけるタイムスタンプの実装が時間に基づき一定の変化が保証できるときは、クロック比も一定であるため、有効である。
【０１０８】
このように、実施の形態６にかかるサーバ２１１によれば、算出した１つのクロック比（時間換算係数）を用いて、異なる期間の複数の到着レートを算出する。これにより、サーバ２１１におけるクロック比の算出のための処理量を低減することができる。
【０１０９】
（実施の形態７）
実施の形態７について、実施の形態２と異なる部分について説明する。実施の形態７にかかるサーバ２１１は、クロック比の計測をクライアント２２１との通信開始から行うとともに、クロック比を一度計測した後もクロック比の計測を継続する。
【０１１０】
このように、実施の形態７にかかるサーバ２１１は、サーバ２１１とクライアント２２１との間の通信中に継続的にクロック比（時間換算係数）を算出する。これにより、サーバ２１１とクライアント２２１との間のクロック比が変動しても、クライアント２２１における到着レートを精度よく計測することができる。
【０１１１】
（実施の形態８）
実施の形態８について、実施の形態２と異なる部分について説明する。
【０１１２】
（実施の形態８にかかる記録テーブル）
図１０は、実施の形態８にかかる記録テーブルの一例を示す図である。実施の形態８のサーバ２１１のメモリ（たとえば図３ＣのＲＡＭ３８２）には、たとえば図１０に示す記録テーブル３５２ａが記憶される。記録テーブル３５２ａのＡｃｋ番号およびタイムスタンプは、応答パケットの、図４ＡのＴＣＰヘッダのフラグ“ＡＣＫ”および図４Ｂ，図４ＣのＴＳｖａｌフィールドに納められた値である。
【０１１３】
送信時刻は、応答パケットに対応するデータパケットのサーバ２１１における送信時刻である。なお、送信時刻を直接取得することが困難な処理系においては、たとえば、タイムスタンプのエコーバック値ＴＳｅｃｒから送信時刻を取得してもよい。または、応答パケットに対するＲＴＴ計測結果をシステムから取得し、応答パケットの到着時刻からＲＴＴを減算することにより送信時刻を逆算してもよい。なお、実施の形態８においては、記録テーブル３５２ａから送信時刻の項目を省いてもよい。
【０１１４】
サーバ２１１は、クロック比の計測において、たとえば、最新の応答パケットと、過去に受信した応答パケットと、を用いる。この場合に、サーバ２１１は、過去の応答パケットについて、最新の応答パケットからどのぐらい遡った応答パケットとするかを柔軟に行えるようにするために、たとえば図１０に示すような記録テーブル３５２ａを用いる。
【０１１５】
そして、サーバ２１１は、応答パケット受信の際に、記録テーブル３５２ａの格納エントリを順次進めながら記録する。これにより、応答パケットの到着間隔がある程度分かっていれば、所望の時間差のある各応答パケットについての情報を確保することができる。したがって、算出に用いる時間幅を適宜変えることも容易となる。
【０１１６】
また、ｉ番目のデータパケットからｊ番目のデータパケットまでの合計のデータ量を算出する場合に、サーバ２１１は、ｉ番目のデータパケットおよびｊ番目のデータパケットに対応する各Ａｃｋ番号を取得する。そして、サーバ２１１は、取得した各Ａｃｋ番号の差分（または差分＋１）を、データパケット１つ分のデータ量に乗じる。これにより、ｉ番目のデータパケットからｊ番目のデータパケットまでの合計のデータ量を算出することができる。
【０１１７】
（実施の形態８にかかる記録テーブルおよび算出結果）
図１１は、実施の形態８にかかる記録テーブルおよび算出結果の一例を示す図である。Ａｃｋ情報記録部３５２は、たとえば図１１に示す記録テーブル１１１０を記録する。記録テーブル１１１０においては、各応答パケットについて、到着時刻と、Ａｃｋ番号と、ＴＳ（ＴＳｖａｌ）値と、が対応付けられている。図１１に示す例では到着時刻を秒単位で示しているが、これは実装依存であり、たとえばサーバ２１１の内部クロックなどに置き換えてもよい。
【０１１８】
図１１に示す例でも図７に示した例と同様に記録テーブル１１１０のエントリ数を３２としているが、応答パケットの到着頻度に対してエントリへの記録頻度を下げるために、図１１に示す例では応答パケットが間引かれて記録されている。具体的には、図１１に示す例では、６個の応答パケットに付き１個の応答パケットのみが記録されている。
【０１１９】
実装の容易性から、記録テーブル１１１０のエントリ数は２のべき乗としてもよい。また、Ａｃｋ情報記録部３５２は、記録テーブル１１１０のエントリがすべて埋まると、古いエントリから上書きしていく。
【０１２０】
図１１に示す算出結果１１２０は、レート観測に用いる時間幅を４エントリ分とした場合の記録テーブル１１１０に基づく到着レート（バイト／秒）の算出結果である。図１１に示す算出結果１１３０は、レート観測に用いる時間幅を８エントリ分とした場合の記録テーブル１１１０に基づく到着レート（バイト／秒）の算出結果である。なお、算出結果１１２０，１１３０は、各エントリでの算出結果を示しているものであり、各エントリに対応する算出結果１１２０，１１３０のすべてが保持されなくてもよい。
【０１２１】
ここでは、算出結果１１２０を例として、エントリ＃３１の応答パケットの受信時における到着レートの算出手順を説明する。サーバ２１１は、エントリ＃３１の応答パケットと、４エントリ遡ったエントリ＃２７の応答パケットと、のＴＳ値の差を算出する。この場合は、サーバ２１１は、ＴＳ（ｊ）−ＴＳ（ｊ−４）＝ＴＳ（３１）−ＴＳ（２７）＝３９６９７−３９６８５＝１２を算出する。
【０１２２】
また、サーバ２１１は、エントリ＃３１の応答パケットと、４エントリ遡ったエントリ＃２７の応答パケットと、のＡｃｋ番号の差を算出する。この場合は、サーバ２１１は、Ａｃｋ（ｊ）−Ａｃｋ（ｊ−４）＝Ａｃｋ（３１）−Ａｃｋ（２７）＝２２７７７２９−２２０８２２５＝６９５０４を算出する。
【０１２３】
ＴＣＰにおけるＡｃｋ番号はバイト単位である。したがって、エントリ＃２７の応答パケットからエントリ＃３１の応答パケットまでに対応する各データパケットの合計のデータ量は６９５０４バイトとなる。
【０１２４】
ここで、サーバ２１１とクライアント２２１との間のクロック比は、たとえば図７に示した例に基づく１／５００であるとする。
【０１２５】
サーバ２１１は、ＴＳ値の差にクロック比を乗じることにより、１２／５００＝０．０２４０００を経過時間として算出する。そして、サーバ２１１は、合計のデータ量を経過時間で除算することにより、６９５０４／０．０２４０００＝２８９６０００≒２９［メガバイト／秒］を到着レートとして算出する。
【０１２６】
このように、実施の形態８に示すサーバ２１１は、サーバ２１１からクライアント２２１への各送信データに対するクライアント２２１からの応答メッセージについて、その応答確認された送信データに対応するＡｃｋ番号（シーケンス番号）と、その応答メッセージのタイムスタンプおよび到着時刻と、を記憶する。そして、サーバ２１１は、記憶内容に基づいて、到着レートの算出に用いる各情報を算出する。
【０１２７】
（実施の形態９）
実施の形態９について、実施の形態８と異なる部分について説明する。クライアント２２１は、転送制御プロトコルおよびその実装によっては、遅延応答（ｄｅｌａｙｅｄ  ａｃｋ）により、サーバ２１１からの送信パケットの到着に対して即時に応答パケットを返さない場合がある。遅延応答は、たとえばＲＦＣ１１２２において規定されている。
【０１２８】
遅延応答が行われると、本来のパケット到着時間に対応するタイムスタンプより時間的に後を示すタイムスタンプが応答パケットに格納されることになり、タイムスタンプが到着時間差を正しく示さなくなる。
【０１２９】
これに対して、実施の形態９にかかるサーバ２１１は、受信した応答パケットが遅延応答によって送信されたものか否かを判定する。そして、サーバ２１１は、遅延応答によって送信されたものであると判定した応答パケットの情報については、記録テーブル３５２ａに格納しない。これにより、遅延応答によって送信されたものであると判定した応答パケットを計測対象から除外し、応答パケットが遅延されて送信されることによる時間的ずれが到着レートの計測に悪影響を与えることを回避することができる。
【０１３０】
たとえば、サーバ２１１は、応答パケットが単一セグメントに対する応答であるか否かを判定することによって、応答パケットが遅延応答によって送信されたものであるか否かを判定することができる。または、サーバ２１１は、ＴＳｖａｌの値が前の応答パケットより増えているにも関わらず、ＴＳｅｃｒの値に変化がない場合は応答パケットが遅延応答によって送信されたものであると判定することができる。
【０１３１】
このように、実施の形態９にかかるサーバ２１１は、クライアント２２１からの応答メッセージのうちの、遅延応答によってクライアント２２１から送信された応答メッセージを除く応答メッセージのそれぞれについて各情報を記憶する。これにより、遅延応答によって送信された応答メッセージを除外して到着レートを算出することができる。このため、応答メッセージのタイムスタンプ（送信時刻情報）に基づく到着レートの算出の精度を向上させることができる。
【０１３２】
（実施の形態１０）
実施の形態１０について、実施の形態８と異なる部分について説明する。パケットレートが高く、応答パケットの到着頻度が高いと、サーバ２１１における処理負荷が高くなる。また、たとえば図１０に示した記録テーブル３５２ａで所望の時間差を得るために、テーブルサイズが大きくなる。
【０１３３】
これに対して、実施の形態１０にかかるサーバ２１１は、応答パケットの到着頻度に応じて、到着した応答パケットを間引いて記録テーブル３５２ａに記録する。応答パケットの到着頻度は、データパケットの送出レートに準じるため、サーバ２１１は、たとえば送出レートに応じて間引く割合を決定する。
【０１３４】
転送制御プロトコルとしてＴＣＰを用いる場合は、送出レートは直接制御されず、ＣＷＮＤ（ｃｏｎｇｅｓｔｉｏｎ  ｗｉｎｄｏｗ：輻輳ウィンドウ）サイズでＲＴＴあたりの送信パケット数が制御される。このため、サーバ２１１は、ＴＣＰあるいはその類のプロトコルを使っている場合は、たとえば、送出レートを制御するパラメータである輻輳ウィンドウサイズに応じ、応答パケットを間引く割合を決定する。
【０１３５】
たとえば、記録テーブル３５２ａのエントリ数が６４であるとする。この場合は、サーバ２１１は、６４個のエントリでＲＴＴ相当の期間の応答パケットを保持できるようにするには、輻輳ウィンドウサイズ／６４個の応答パケットに一回、記録テーブル３５２ａのエントリに記録し残りを間引けばよい。
【０１３６】
このように、実施の形態１０にかかるサーバ２１１は、クライアント２２１からの応答メッセージについて、サーバ２１１がクライアント２２１へデータを送信するレートを示す情報（たとえば輻輳ウィンドウサイズ）に応じて記録対象とする応答メッセージを間引いて、シーケンス番号と、送信時刻情報および到着時刻と、を記憶する。これにより、サーバ２１１における処理負荷を低減することができる。また、記録テーブル３５２ａのサイズを小さくすることができる。
【０１３７】
（実施の形態１１）
実施の形態１１について、実施の形態８と異なる部分について説明する。上述のように、ＴＣＰにおいては、ＲＴＴあたりの送信パケット数が輻輳ウィンドウサイズで制限される。このため、差を取る応答パケットがちょうどＲＴＴ分の時間差にある場合は、応答パケットのシーケンスはちょうど輻輳ウィンドウサイズ分になり、計測レートは送出レートで支配されてしまう。
【０１３８】
すなわち、計測時間をＲＴＴになるぐらいの幅にする場合は、可用帯域の計測に要するバーストサイズを得るためには、送出レートが可用レートに達していることを要し、このような状況においては空き帯域を探索しなくてもよい。
【０１３９】
したがって、現在の送出レートに対し、どのぐらい可用帯域があるかを知るために本計測方法を用いる場合は、サーバ２１１は、対象となる応答パケットはＲＴＴ期間に送出し得るパケット数より十分に短くする。ここで、ＲＴＴ期間に送出し得るパケット数は、ＴＣＰの場合は一般に輻輳ウィンドウサイズに相当する。
【０１４０】
たとえば、実施の形態１０のように応答パケットを間引いて記録を行う場合は、ほぼ６４エントリがＲＴＴ相当になる。このため、用いるエントリ差（ｉとｊの差）を８エントリ分、あるいは１６エントリ分とすることができる。
【０１４１】
このように、実施の形態１１にかかるサーバ２１１は、第３情報／第４情報取得対象とした応答メッセージの対を、その第３情報で示されるデータ量が、ラウンドトリップタイム内においてサーバ２１１がクライアント２２１へ送信し得るデータ量以下であるように応答メッセージの対を選択する。これにより、ＲＴＴあたりの送信パケット数が輻輳ウィンドウサイズで制限されていても、到着レートを精度よく計測することができる。
【０１４２】
（実施の形態１２）
実施の形態１２について、実施の形態１１と異なる部分について説明する。到着レートの算出に使用する応答パケットの対の間隔は、短いと本来の可用レートより高いレートを計測してしまうリスクがある。ネットワークの変動、より具体的には、ＲＴＴの変動、あるいは後述の送信遅延の変動が大きい場合は、他トラフィックの影響を受けやすいと想定されるため、より安定志向の計測方法の方が実用的である。
【０１４３】
これに対して、実施の形態１２にかかるサーバ２１１は、ネットワークの変動度合いに応じて到着レートを計測する応答パケットの間隔を調整する。たとえば、サーバ２１１は、到着レートを計測する応答パケットの間隔を、ネットワークの変動が大きいときに長く、小さいときには短くする。これにより、リスクのある状況下では安全度を取った制御を行うことができる。
【０１４４】
一例として、実施の形態１０のように応答パケットを間引いて記録を行う場合について説明する。この場合は、サーバ２１１は、たとえばネットワークの変動が小さい場合はエントリ差（ｉとｊの差）を８エントリ分とし、ネットワークの変動が大きい場合は１６エントリ分、といった具合に評価対象とする応答パケット間隔を調整する。
【０１４５】
たとえば、エントリ差（ｉとｊの差）を４エントリ分とする場合は、到着レート（バイト／秒）の算出結果は図１１に示した算出結果１１２０のようになる。また、エントリ差（ｉとｊの差）を８エントリ分とする場合は、到着レート（バイト／秒）の算出結果は図１１に示した算出結果１１３０のようになる。
【０１４６】
算出結果１１２０，１１３０に示すように、エントリ数の差を取る間隔を倍にすると、差分対象とする応答パケットの時間差も約２倍となり、到着レートの算出がより長い時間幅で行われる。その結果、エントリ差を８エントリ分とした場合の方が、エントリ差を４エントリ分とした場合よりもピークが抑えられた結果が得られている（最大で３０２１９１３）。
【０１４７】
たとえば複数のトラフィックが混在して流れる場合は、経路上の送信キューにおけるパケットスケジューリングのバースト性によっては、長めの計測時間を取らないと一時的に許容されたバースト性によって本来より高いピークレートが見えることがある。このため、ＲＴＴの観測値の分散などによってトラフィック変動を評価し、評価結果に応じて遡るエントリ数の幅を変えることにより、到着レートをより精度よく計測することができる。
【０１４８】
このように、実施の形態１２にかかるサーバ２１１は、第３情報／第４情報取得対象とする応答メッセージの対は、ネットワークの変動の大きさに応じ、その第４情報で示される時間経過が変動するように応答メッセージの対を選択する。これにより、ネットワークの変動に応じて到着レートを精度よく計測することができる。
【０１４９】
（実施の形態１３）
実施の形態１３について、実施の形態８と異なる部分について説明する。実施の形態１３にかかるサーバ２１１は、ＴＣＰの送出レートの制御に到着レートの算出結果を用いる。上述のように、ＴＣＰにおいては一般にＣＷＮＤの値で送出レートが制御される。サーバ２１１は、たとえば、ＣＷＮＤ／ＲＴＴの値が到着レートの算出結果のピーク値に近づくように、データパケットの送出レートの制御を行う。
【０１５０】
上述のように、到着レートの算出に用いる応答パケットの対の間隔を狭くすると、到着レートのピーク値が見える。このため、送信のバースト性が発生するような送り方をしていれば（すなわち送信時点で意図的にパケットの送信ペースを均一化しなければ）、ボトルネックリンクの可用帯域を使い切っていれば計測レートはピーク値、使い切っていなければより低い値が得られる。
【０１５１】
したがって、到着レートのピーク値を計測することによって、可用帯域を概ね推定することができる。このため、可用帯域の推定値を送出レートの制御目標値として送出レートを制御すれば、可用帯域に迅速に収束するような送出レート制御が可能となる。
【０１５２】
このように、実施の形態１３にかかるサーバ２１１は、算出した到着レートのピーク値が送信可能帯域の上限値となるように、データパケットの送出レートを制御する。これにより、輻輳を抑えつつ効率よくデータパケットを伝送することができる。
【０１５３】
（実施の形態１４）
実施の形態１４について、実施の形態１３と異なる部分について説明する。計測したピーク値はどこかで捨てること（エージング）をしないと、値が残ってしまう。
【０１５４】
これに対して、実施の形態１４にかかるサーバ２１１は、一定期間経過したピーク値は捨てる（ピーク値のエージング）。たとえばＴＣＰ用の可用レートの計測を行う場合は、ピーク値は基本的にＲＴＴ内に一度は計測できるはずである。このため、サーバ２１１は、たとえば、過去１ＲＴＴ〜２ＲＴＴ分の到着レートの最大値を保持し、保持した最大値が送信可能帯域の上限値となるように、データパケットの送出レートを制御する。
【０１５５】
このように、実施の形態１４にかかるサーバ２１１は、算出した到着レートのうちの、所定期間以前の到着レートを除いた到着レートのピーク値に基づいて送出レートの制御を行う。これにより、サーバ２１１の負荷を低減することができる。また、古い到着レートに基づいて送出レートを制御して伝送効率が低下することを避けることができる。
【０１５６】
（実施の形態１５）
実施の形態１５について、実施の形態２と異なる部分について説明する。実施の形態１５にかかるサーバ２１１は、たとえば図１０に示した記録テーブル３５２ａを、送信時刻の項目を含めて記憶する。
【０１５７】
（サーバとクライアントとの間の信号の送受信）
図１２は、サーバとクライアントとの間の信号の送受信の一例を示す図である。サーバ２１１は、Ａｃｋ（ｉ）に対応するＤａｔａ（ｉ）の送信時刻と、Ａｃｋ（ｊ）に対応するＤａｔａ（ｊ）の送信時刻と、の差であるΔＴｄｓ（ｉ，ｊ）を算出する。
【０１５８】
また、サーバ２１１は、ΔＴａｒ（ｉ，ｊ）に算出したクロック比を乗算した値と、算出したΔＴｄｓ（ｉ，ｊ）と、の差を算出することにより、サーバ２１１からのデータパケットの遅延時間の変動を計測する。
【０１５９】
ΔＴｄｓ（ｉ，ｊ）に対してΔＴａｒ（ｉ，ｊ）が時間的に増加している場合は、サーバ２１１からのデータパケットの遅延時間が増加していると判断することができる。一方、ΔＴｄｓ（ｉ，ｊ）に対してΔＴａｒ（ｉ，ｊ）が時間的に低下している場合は、サーバ２１１からのデータパケットの遅延時間が低下していると判断することができる。
【０１６０】
パケットネットワークでの伝播遅延の増加は、通常、キュー滞留時間の増加により起こるため、このように計測した遅延時間の変動は、ネットワークにおける輻輳状態の指標として用いることが可能である。サーバ２１１は、遅延時間の変動の計測結果に基づいて、データパケットの送出レートを制御する。たとえば、サーバ２１１は、遅延時間が増加している場合は、データパケットの送出レートを増加させないようにしたり、低下させたりする。これにより、ネットワークの輻輳を抑えることができる。
【０１６１】
このように、実施の形態１５にかかるサーバ２１１は、計測対象の最初と最後の各送信データのサーバ２１１における送信時刻の差を取得する。また、サーバ２１１は、計測対象の最初と最後の各送信データに対するクライアント２２１からの各応答メッセージのタイムスタンプの差と、算出したクロック比（時間換算係数）と、を乗算して得られる値と、を取得する。
【０１６２】
また、サーバ２１１は、取得した差と値との差に基づいてサーバ２１１からの送信データの遅延時間の変動を計測する。そして、サーバ２１１は、遅延時間の変動の計測結果に基づいて、データパケットの送出レートの制御を行う。これにより、ネットワークにおける輻輳状態に応じた送出レートの制御が可能になり、輻輳を抑えつつ効率よくデータパケットを伝送することができる。
【０１６３】
（実施の形態１６）
実施の形態１６について、実施の形態１３または実施の形態１５と異なる部分について説明する。ＴＣＰにおいては、空き帯域探索と輻輳検出が行われる。ここで、空き帯域探索の方法として、たとえば実施の形態１３で示したように、ピーク値を可用帯域推定値として送出レートの制御目標に用いる方法がある。また、輻輳検出の方法として、実施の形態１５で示した送信方向遅延の変動（とくに増加傾向）を用いる方法がある。これにより、ネットワークにおける通信相手までのパスにおける可用帯域の空きを迅速に検出するとともに、ネットワークの輻輳を抑える転送制御が可能となる。
【０１６４】
ここで、転送制御プロトコルの送出レート制御の方法によっては、直接ターゲットレートに送出レートを変更することが難しいケースもある。たとえば、上述のようにＴＣＰにおいては輻輳ウィンドウの値で送出レートが調整されるが、輻輳ウィンドウの値をいきなり増やすと高いバーストトラフィックが発生し、ネットワークを輻輳させてしまう可能性がある。この場合は送出レートあるいは送出レートを制御するためのパラメータを、送出レートがターゲットレートになるように制御することが求められる。
【０１６５】
実施の形態１３で示したようにＴＣＰの輻輳制御を実施し、実施の形態１５で示した構成により送信方向の遅延増加を検出する場合は、遅延の増加を一回の計測だけで行うと単なるパケット到着揺らぎ程度でも反応してしまう可能性がある。このため、たとえば複数の計測結果を累計し、その累計値が閾値を超えた場合に輻輳と判断する。
【０１６６】
輻輳への対応として、サーバ２１１は、たとえば輻輳ウィンドウの値を調整する。たとえば、サーバ２１１は、送出レートを半分に落とすことによって輻輳ウィンドウの値を調整する。送出レートを半分にする場合に、たとえば、サーバ２１１は、応答されたデータサイズが２パケット分に達したとき１パケット送ることが可能となるように輻輳ウィンドウの値を制御する。ただし、輻輳ウィンドウの値を調整する方法についてはこれに限らず、各種の方法を用いることができる。
【０１６７】
このように、実施の形態１６にかかるサーバ２１１は、データパケットの遅延時間が増加している場合は、データパケットの送出レートを低下させる。これにより、ネットワークにおける輻輳を抑えることができる。
【０１６８】
（実施の形態１７）
実施の形態１７について、実施の形態１６と異なる部分について説明する。実施の形態１６に示したように、計測した利用可能帯域を一気に使うような制御をすると、その制御遅延の間での、ネットワーク内、とくにボトルネックリンクをシェアするようなトラフィックが急に増えた場合に急激なトラフィック増加が発生する場合がある。このため、バッファ溢れによるパケット廃棄を招く可能性がある。
【０１６９】
これに対して、実施の形態１７にかかるサーバ２１１は、可用帯域との差が大きいときは大きめに送出レートを制御し、可用帯域との差が小さいときは小さめに送出レートを制御し、目標レートに指数的に収束するように送出レートを制御してもよい。
【０１７０】
ここでは、輻輳ウィンドウの値の調整により輻輳制御を実施する場合について説明する。この場合は、サーバ２１１は、目標値となる輻輳ウィンドウの値が現在の輻輳ウィンドウの値の２倍以上であるときに、ＲＴＴあたりの輻輳ウィンドウの値が倍になるように輻輳ウィンドウの値を調整する。また、サーバ２１１は、目標値となる輻輳ウィンドウの値が現在の輻輳ウィンドウの値の２倍未満のときはＲＴＴあたりの輻輳ウィンドウの目標値との差が半分になるように輻輳ウィンドウの値を調整する。
【０１７１】
ここで、ＴＣＰの輻輳ウィンドウの値を急激に変えるとバーストトラフィックが発生してしまうため、１つの応答パケットあたり新規送信可能となるパケット数が２〜４程度になるように輻輳ウィンドウの値を増加させてもよい。
【０１７２】
このように、実施の形態１７にかかるサーバ２１１は、算出した到着レートに基づく送出レートの目標値と、現在の送出レートと、の相違（差または比）に応じて、送出レートの制御量を変化させる。たとえば、サーバ２１１は、算出した到着レートに基づく送出レートの目標値と、現在の送出レートと、の相違が大きいほど、送出レートの制御量を大きくする。これにより、急激なトラフィックの増加を回避することができる。
【０１７３】
（実施の形態１８）
実施の形態１８について、実施の形態１６と異なる部分について説明する。実施の形態１６に示したようにＴＣＰの輻輳制御を実施している場合は、輻輳検出時に、計測されるクライアント２２１の到着レートは輻輳により低下していると想定される。この場合は、適正な利用可能帯域は、到着レートのピーク値ではなく、最新の到着レートがもっとも現実に近い利用可能帯域を示していると考えられる。
【０１７４】
これに対して、実施の形態１８にかかるサーバ２１１は、輻輳検出時に、送出レートが到着レートの計測値に近づくように輻輳ウィンドウの値を調整する。たとえば、送出レートを半分にする場合は、サーバ２１１は、応答されたデータサイズが２パケット分に達したとき１パケット送ることが可能となるように輻輳ウィンドウの値を制御する。
【０１７５】
このように、実施の形態１８にかかるサーバ２１１は、データパケットの遅延時間が増加している場合は、算出した到着レートに近づくようにデータパケットの送出レートを制御する。これにより、ネットワークの輻輳時に、実際の利用可能帯域を示す最新の到着レートによってデータパケットを送出することができる。このため、輻輳を抑えつつ効率よくデータパケットを伝送することができる。
【０１７６】
（実施の形態１９）
実施の形態１９について、実施の形態１６と異なる部分について説明する。サーバ２１１がたとえば実施の形態１６のような制御機能を有する場合であっても、クライアント２２１のクロック比が得られなければ正確な到着レートを算出することができない。
【０１７７】
これに対して、実施の形態１９にかかるサーバ２１１は、クライアント２２１のクロック比が得られない場合は、ＴＣＰの輻輳制御に従来型アルゴリズム（たとえばｒｅｎｏやｃｕｂｉｃ）を用いる。
【０１７８】
このように、実施の形態１９にかかるサーバ２１１は、クライアント２２１のクロック比が得られない場合は、クロック比に基づく到着レートを用いた送出レートの制御とは異なる代替手段によって送出レートの制御を行う。これにより、クライアント２２１のクロック比が得られなくても送出レートの制御を行うことができる。
【０１７９】
（実施の形態２０）
実施の形態２０について、実施の形態１６と異なる部分について説明する。サーバ２１１がたとえば実施の形態１６のような制御機能を有する場合であっても、クライアント２２１のクロック比が得られなければ正確な到着レートを算出することができない。
【０１８０】
これに対して、実施の形態２０にかかるサーバ２１１は、クライアント２２１のクロック比が得られない場合は、応答パケットの到着時刻差に対するデータ量によって算出されるデータレートを用いて送出レートを制御する。
【０１８１】
このように、実施の形態２０にかかるサーバ２１１は、クライアント２２１のクロック比が得られない場合は、クロック比に基づく到着レートを用いた送出レートの制御とは異なる代替手段によって送出レートの制御を行う。これにより、クライアント２２１のクロック比が得られなくても送出レートの制御を行うことができる。
【０１８２】
（実施の形態２１）
実施の形態２１について、実施の形態１６と異なる部分について説明する。サーバ２１１がたとえば実施の形態１６のような制御機能を有する場合であっても、通信開始後しばらくは到着レートの算出結果が得られない。
【０１８３】
これに対して、実施の形態２１にかかるサーバ２１１は、通信開始から所定の期間が経過するまでは、ＴＣＰの輻輳制御に従来型アルゴリズム（たとえばスロースタートあるいはｒｅｎｏやｃｕｂｉｃ）を用いる。
【０１８４】
このように、実施の形態２１にかかるサーバ２１１は、クライアント２２１との通信開始から所定の期間が経過するまでは、クロック比に基づく到着レートを用いた送出レートの制御とは異なる代替手段によって送出レートの制御を行う。これにより、通信開始後に迅速に送出レートの制御を行うことができる。
【０１８５】
（実施の形態２２）
実施の形態２２について、実施の形態１６と異なる部分について説明する。サーバ２１１がたとえば実施の形態１６のような制御機能を有する場合であっても、ＲＴＴの計測値がサーバ２１１の時刻計測分解能に比べて十分大きくないと、到着レートの算出の除数の有効桁数が十分に取れない。
【０１８６】
また、ＴＣＰではタイムスタンプはオプションのため、相手とのネゴシエーションの結果使用しないという運用も有り得る。このため、そもそもタイムスタンプを使わない通信を始めてしまった場合は到着レート計測が行えない。
【０１８７】
これに対して、実施の形態２２にかかるサーバ２１１は、このような場合に、ＴＣＰの輻輳制御に従来型アルゴリズム（たとえばｒｅｎｏやｃｕｂｉｃ）を用いる。
【０１８８】
このように、実施の形態２２にかかるサーバ２１１は、ＲＴＴの計測値が一定値以内である場合に、クロック比に基づく到着レートを用いた送出レートの制御とは異なる代替手段によって送出レートの制御を行う。または、実施の形態２２にかかるサーバ２１１は、クライアント２２１がタイムスタンプを付与しない場合に、クロック比に基づく到着レートを用いた送出レートの制御とは異なる代替手段によって送出レートの制御を行う。または、実施の形態２２にかかるサーバ２１１は、サーバ２１１のクロック情報の分解能に比べて十分大きくない場合に、クロック比に基づく到着レートを用いた送出レートの制御とは異なる代替手段によって送出レートの制御を行う。
【０１８９】
（実施の形態２３）
実施の形態２３について、実施の形態２と異なる部分について説明する。
【０１９０】
（実施の形態２３にかかる中継装置）
図１３Ａは、実施の形態２３にかかる中継装置の一例を示す図である。図１３Ｂは、図１３Ａに示した中継装置における信号の流れの一例を示す図である。図１３Ａ，図１３Ｂにおいて、図３Ａ，図３Ｂに示した部分と同様の部分については同一の符号を付して説明を省略する。
【０１９１】
図１３Ａ，図１３Ｂに示す中継装置１３００は、たとえば図２に示したインターネット２０１や無線アクセス網２０２に設けられ、サーバ２１１とクライアント２２１との間の通信を含む各コネクションの中継を行う中継装置である。
【０１９２】
中継装置１３００は、リンクレイヤ処理部１３１０，１３３０と、コネクション識別処理部１３２１と、送信キュー１３２２と、コネクション管理部１３２３と、コネクション識別処理部１３４１と、送信パケットスケジュール部１３４２と、を備える。
【０１９３】
また、中継装置１３００は、Ａｃｋ情報記録部３５２と、クロック比計測部３５３と、相手到着レート計測部３５４と、送信遅延変動計測部３５５と、ＲＴＴ計測部３５６と、コネクション送出レート制御部１３５１と、を備える。
【０１９４】
リンクレイヤ処理部１３１０は、リンクレイヤ受信部１３１１と、送信キュー群１３１２と、スケジューラ１３１３と、リンクレイヤ送信部１３１４と、を備える。リンクレイヤ受信部１３１１は、ネットワーク（たとえば図２のサーバ２１１）からのパケットを受信する。リンクレイヤ受信部１３１１が受信するパケットには、たとえば、サーバ２１１からのデータパケットがある。リンクレイヤ受信部１３１１は、受信したパケットをコネクション識別処理部１３２１へ出力する。
【０１９５】
送信キュー群１３１２は、中継装置１３００が中継する各コネクションのそれぞれについての送信キューを含む。スケジューラ１３１３は、送信キュー群１３１２に格納されたパケットを、コネクション間のスケジューリングを行いながら順次読み出してリンクレイヤ送信部１３１４へ出力する。リンクレイヤ送信部１３１４は、スケジューラ１３１３から出力されたパケットをネットワーク（たとえば図２のサーバ２１１）へ送信する。
【０１９６】
コネクション識別処理部１３２１は、リンクレイヤ受信部１３１１から出力されたパケットのコネクションを識別する。そして、コネクション識別処理部１３２１は、識別結果をコネクション管理部１３２３へ出力する。また、コネクション識別処理部１３２１は、コネクションを識別したパケットを送信キュー１３２２に格納する。
【０１９７】
リンクレイヤ処理部１３３０は、リンクレイヤ送信部１３３１と、リンクレイヤ受信部１３３２と、を備える。リンクレイヤ送信部１３３１は、送信キュー１３２２に格納されたパケットを順次読み出してローカルリンク（たとえば図２のクライアント２２１）へ送信する。
【０１９８】
リンクレイヤ受信部１３３２は、ローカルリンク（たとえば図２のクライアント２２１）からのパケットを受信する。リンクレイヤ受信部１３３２が受信するパケットには、たとえば、クライアント２２１からサーバ２１１への応答パケットがある。リンクレイヤ受信部１３３２は、受信したパケットをコネクション識別処理部１３４１へ出力する。
【０１９９】
コネクション識別処理部１３４１は、リンクレイヤ受信部１３３２から出力されたパケットのコネクションを識別する。そして、コネクション識別処理部１３４１は、識別結果をコネクション管理部１３２３へ出力する。また、コネクション識別処理部１３４１は、コネクションを識別したパケットを送信パケットスケジュール部１３４２に格納する。
【０２００】
送信パケットスケジュール部１３４２は、コネクション識別処理部１３４１から出力されたパケットと、送出レート制御パケットと、のスケジューリングを行い、スケジューリング結果に基づいて各パケットを送信キュー群１３１２へ格納する。
【０２０１】
コネクション管理部１３２３は、コネクション識別処理部１３２１，１３４１から出力されたコネクションの識別情報に基づいて、各コネクションの状態などを示すコネクション管理テーブル１３２３ａ（たとえば図１４参照）を管理する。また、コネクション管理部１３２３は、応答パケットについての識別情報に基づいて、応答パケットに関する情報を識別情報とともにＡｃｋ情報記録部３５２へ出力する。
【０２０２】
Ａｃｋ情報記録部３５２は、コネクション管理部１３２３から出力された情報に基づいて、コネクションごとに設けられる記録テーブル３５２ａを記録する。クロック比計測部３５３は、クロック比をコネクションごとに計測する。相手到着レート計測部３５４は、到着レートをコネクションごとに計測する。送信遅延変動計測部３５５は、送信遅延変動をコネクションごとに計測する。ＲＴＴ計測部３５６は、ＲＴＴをコネクションごとに計測する。
【０２０３】
コネクション送出レート制御部１３５１は、相手到着レート計測部３５４から出力された到着レートに基づいて、パケットの送出レートをコネクションごとに決定する。そして、コネクション送出レート制御部１３５１は、決定した送出レートを示し、対象のコネクションの送信側（たとえばサーバ２１１）を宛先とする送出レート制御パケットを送信パケットスケジュール部１３４２へ出力する。これにより、相手到着レート計測部３５４における到着レートの計測結果に基づいて、パケットの送信側に対して送出レートを制御させることができる。
【０２０４】
ここではコネクションごとに到着レートを計測して送出レートを制御する場合について説明したが、到着レートの計測および送出レートの制御の対象は、中継装置１３００が中継する各コネクションのうちの一部のコネクションであってもよい。
【０２０５】
また、ここでは到着レートの計測結果によって送信側の送出レートを制御する場合について説明したが、到着レートの計測結果をネットワーク状態監視のパラメータとして用いてもよい。また、到着レートの計測結果を中継装置１３００の内部でのＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）制御に用いてもよい。また、到着レートの計測結果を中継装置１３００が制御可能な帯域制御やパケットスケジューリングに用いてもよい。
【０２０６】
図１３Ａ，図１３Ｂに示した中継装置１３００は、たとえば図３Ｃに示した通信装置３８０によって実現することができる。この場合は、図１３Ａ，図１３Ｂに示したリンクレイヤ処理部１３１０，１３３０は、たとえば通信インタフェース３８４によって実現することができる。図１３Ａ，図１３Ｂに示したコネクション識別処理部１３２１、コネクション管理部１３２３、コネクション識別処理部１３４１および送信パケットスケジュール部１３４２は、たとえばＣＰＵ３８１によって実現することができる。
【０２０７】
図１３Ａ，図１３Ｂに示したＡｃｋ情報記録部３５２、クロック比計測部３５３および相手到着レート計測部３５４は、たとえばＣＰＵ３８１によって実現することができる。図１３Ａ，図１３Ｂに示した送信遅延変動計測部３５５、ＲＴＴ計測部３５６およびコネクション送出レート制御部１３５１は、たとえばＣＰＵ３８１によって実現することができる。
【０２０８】
図１３Ａ，図１３Ｂに示した送信キュー１３２２は、たとえばＲＡＭ３８２によって実現することができる。図１３Ａ，図１３Ｂに示した記録テーブル３５２ａおよびコネクション管理テーブル１３２３ａは、たとえばＲＡＭ３８２に記憶される。
【０２０９】
（コネクション管理テーブル）
図１４は、コネクション管理テーブルの一例を示す図である。コネクション管理部１３２３は、コネクション識別処理部１３２１，１３４１から出力されたコネクションの識別情報に基づいて、たとえば図１４に示すコネクション管理テーブル１３２３ａを管理する。このようなコネクション管理テーブル１３２３ａを管理することにより、中継装置１３００が中継する各コネクションのうち、到着レートの計測対象のコネクションについての各パケットの情報を抽出することができる。このコネクションの生成や管理には、たとえばコネクショントラッキング（ｃｏｎｎｅｃｔｉｏｎ  ｔｒａｃｋｉｎｇ）の技術などを用いることができる。
【０２１０】
このように、実施の形態２３によれば、クライアント２２１の側に機能を追加しなくても、サーバ２１１とクライアント２２１との間の中継装置１３００によってクライアント２２１における到着レートを計測することが可能になる。また、その計測方法の調整により計測するデータレートの利用形態に合った計測結果を得ることができる。
【０２１１】
また、この計測結果を、データ転送を行うプロトコルの送出レートの制御に用いることにより、クライアント２２１への可用帯域の推定や可用帯域の空きの検出を行うことができる。このため、送出レートを可用帯域にあわせてより適切に調整することが可能となり、通信スループットの向上やネットワークの利用効率の向上を図ることができる。
【０２１２】
以上説明したように、計測装置、通信装置、中継装置、計測方法および計測プログラムによれば、到着レートの計測精度の向上を図ることができる。
【０２１３】
上述した実施の形態２〜２３においては、図１に示した計測装置１０１および第１通信装置１１０をサーバ２１１に適用し、図１に示した第２通信装置１２０をクライアント２２１に適用する場合について説明した。ただし、計測装置１０１、第１通信装置１１０および第２通信装置１２０の適用態様はこれに限らない。たとえば、図１に示した計測装置１０１および第１通信装置１１０をクライアント２２１に適用し、図１に示した第２通信装置１２０をサーバ２１１に適用することも可能である。
【０２１４】
近年のネットワークは、ネットワーク層以下はデータをパケット化し、データグラムとして宛先まで配送し、エンド−エンドの転送保証は、ネットワーク層の上位においてエンドーエンドでＴＣＰなどのトランスポート層サービスを用いて実現されることが多い。エンドーエンドのトランスポート層サービスを用いた個々の通信をコネクションと称する。
【０２１５】
このようなネットワーク構成においては、特にネットワークの規模が大きくなると、ネットワークとして個々のトラフィックを厳密に制御することは難しく、一部の特定用途を除き、ベストエフォート型でネットワークを利用することになる。
【０２１６】
したがって、ネットワークの容量を超えるようなトラフィックが発生し、その過剰分をキュー等により吸収しきれない場合は、ネットワーク内でパケットの廃棄が発生する。ここで、ベストエフォートだからといって、個々のコネクションが無秩序にデータを流すと容易に各リンクの容量を超えたトラフィックが発生し、その結果パケット廃棄が大量に発生し、実効的な通信が行えなくなる場合がある。
【０２１７】
過剰な送信を行うとネットワーク内でバッファ溢れを起こし、自身のデータ転送効率を下げるだけでなく、ほかのトラフィックの通信も妨げてしまう。一方、控えめに送信しすぎると、ネットワークの容量を余らせてしまいデータ転送時間がその分長くかかる。なお、この特性はインターネットでなくても合流や分岐があるようなパケット網でベストエフォート型通信をする場合であれば生じるものである。
【０２１８】
また、近年は別の要因でも利用可能な通信帯域が変動する。技術の進展により、データ通信に供するリンクレイヤ技術にさまざまなものが登場し、さらに混在や多段接続で使われる。そのようなリンクにおいては、たとえば無線通信を用いる場合、昨今は電波状況に応じて最適な変調方式を動的に切り替えるような制御が一般化しているため、他にトラフィックが流れてなくても利用可能帯域は変動しうる。
【０２１９】
したがって、ベストエフォートで通信を行うネットワークにおいては、急激なトラフィック変動を避けつつ、ネットワークの混み具合やリンク容量の変動により変化する利用可能なスループットを探りながら相手への送出レートを調整する輻輳制御が求められる。しかし、利用可能な通信帯域は絶えず変動するため、絶えず良好なスループットを得るには、利用可能な通信帯域を迅速に知ることが求められる。
【０２２０】
トランスポート層サービスを実現するプロトコルとして多く利用されているＴＣＰにおいては、輻輳を回避するための輻輳制御アルゴリズムとして、ｔａｈｏｅおよびその改良版ｒｅｎｏ／ｎｅｗ  ｒｅｎｏと称される輻輳制御アルゴリズムが実装されている。
【０２２１】
しかし、これらアルゴリズムは、廃棄を検出するまでは、ＲＴＴあたり送信パケット数を１つずつ増やし、廃棄を検出したらＲＴＴあたり送信パケット数を半分あるいは最小値にするといった単純なものである。このため、ＲＴＴが大きいとなかなかスループットが上がらず、実行通信速度が得られない場合がある。
【０２２２】
このため、パケット廃棄が検出されない場合により積極的にパケット送信量を増やすような提案や、さらにネットワークの輻輳をＲＴＴの変化を用いて検出するような提案がこれまでなされてきた。しかし、廃棄検出をスループットの抑制に用いるような方法は、絶えずパケット廃棄を発生させるため、ネットワークの効率を低下させ、またバッファ滞留を定常的に起こす場合がある。
【０２２３】
また、輻輳を遅延増加で検出する方法は、可用帯域を超えたことは分かっても、可用帯域に余裕があるときにどのぐらい空きがあるかを知ることができないため、結局は輻輳が発生しないよう、ゆっくりスループットを上げる手法を取らざるを得なかった。
【０２２４】
こうした制御の限界は、可用帯域を積極的に知ることにより改善できることが考えられるが、この計測は容易ではない。よく知られている方法としては、送信側が過剰に送信すれば、受信側に届く帯域は途中の一番細いリンク（ボトルネックリンク）に律速されるため、受信レートを計測することにより可用帯域を知る方法がある。
【０２２５】
しかし、受信レートを直接計測することができるのは受信側であり、この実現には受信側で計測して結果を送信側に伝えることを要する。特にＴＣＰのようなすでに広く使われるプロトコルがある状況では、送受信側双方に実装しないと機能しない方法は普及させるのが難しい。これまでのＴＣＰの輻輳制御アルゴリズムも、送信側のみに適用されるものであるため、効果を得やすいという状況があった。
【０２２６】
一方、送信側だけの対応で可能な制御として、Ａｃｋパケットで通知されるＡｃｋ番号の進み具合によって相手への到着レートを計測する方法が知られている。受信側が、データ受信後速やかに応答パケットを返信すれば、応答パケット間隔はデータパケットの到着間隔を示す。
【０２２７】
しかし、この計測方法は、Ａｃｋパケットが返送されるパスでのキュー遅延の影響を受けやすい。ネットワーク上に他のパケットが流れていないような理想的な条件では、Ａｃｋパケットはその長さ自体が短いため迅速に返送され、ほぼ伝播遅延でデータ送信元に返される。しかし、現実には他のトラフィックの影響で到着時間が容易に変動する。たとえば、戻りパスの方向に他トラフィックの長いパケットがあるだけでキューイングディレイが無視できないレベルで発生する。
【０２２８】
高々１パケットレベルでのキュー遅延であれば、複数のＡｃｋパケットをもとにデータ到着レートを計測することにより変動を抑えることが可能である。しかし、戻りパス自体に輻輳が起き始め徐々に遅延が増加していくような状況ではＡｃｋパケットの到着間隔はデータ到着間隔に対し広がり続けるしその逆も起こりうる。したがって、このような状況では到着レートを精度よく計測することが困難である。
【０２２９】
これに対して、上述した各実施の形態によれば、応答メッセージの送信時刻情報および到着時刻を用いることにより、送信側において容易に取得可能な各情報に基づいて到着レートを計測することができる。このため、受信側に機能を追加しなくても到着レートを計測することができる。また、到着レートの計測結果に対する、Ａｃｋパケットのキュー遅延の影響を抑えることができる。
【０２３０】
さらに、送信側と受信側の間の時間比（時間換算係数）を算出して用いることにより、送信側と受信側の各時間基準が一致していなくても到着レートを精度よく計測することができる。
【０２３１】
なお、本実施の形態で説明した計測方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【０２３２】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２３３】
（付記１）第１通信装置から第２通信装置への２つの送信データに対する前記第２通信装置からの応答メッセージのうち任意の２つの応答メッセージの前記第２通信装置により付された送信時刻情報の差を示す第１情報と、
前記２つの応答メッセージの前記第１通信装置への到着時刻の差を示す第２情報と、
前記第１通信装置から前記第２通信装置への送信データに対する、前記第１情報／第２情報取得対象としたものと同じ、あるいは異なる任意の２つの応答メッセージに対し、その２つの応答メッセージの間において前記第２通信装置へ到着した送信データの合計のデータ量を示す第３情報と、
その第３情報算出の対象とした２つの応答メッセージの前記第２通信装置により付された送信時刻情報の差を示す第４情報と、
に基づいて、前記第１情報と前記第２情報とに基づく前記第１通信装置と前記第２通信装置との間の時間換算係数と、前記第３情報と前記第４情報とに基づくレートと、を乗じて得られる値を算出することにより前記第２通信装置における到着レートを算出する算出部を備えることを特徴とする計測装置。
【０２３４】
（付記２）前記算出部は、前記時間換算係数算出において、前記２つの応答メッセージ対を複数組について対応する前記第１情報／第２情報を取得し平均化することを特徴とする付記１に記載の計測装置。
【０２３５】
（付記３）前記第１情報／第２情報取得対象の２つの応答メッセージは、前記第３情報／第４情報取得対象とした応答メッセージの間隔よりも長い時間間隔のものを使用することを特徴とする付記１に記載の計測装置。
【０２３６】
（付記４）前記算出部は、時間換算係数の複数の候補の中から前記第１情報と前記第２情報との比に最も近い時間換算係数を特定し、特定した前記時間換算係数と前記レートとを乗じることにより前記到着レートを算出することを特徴とする付記１〜３のいずれか一つに記載の計測装置。
【０２３７】
（付記５）前記算出部は、算出した１つの前記時間換算係数を用いて異なる期間の複数の前記到着レートを算出することを特徴とする付記１〜４のいずれか一つに記載の計測装置。
【０２３８】
（付記６）前記算出部は、前記第１通信装置と前記第２通信装置との間の通信中に継続的に前記時間換算係数を算出することを特徴とする付記１〜４のいずれか一つに記載の計測装置。
【０２３９】
（付記７）前記第１通信装置から前記第２通信装置への各送信データに対する前記第２通信装置からの応答メッセージについて、その応答確認された送信データに対応するシーケンス番号と、その応答メッセージの前記送信時刻情報および前記第１通信装置への到着時刻と、を記憶する記憶部を備え、
前記算出部は、前記記憶部の記憶内容に基づいて、前記第１情報、前記第２情報、前記第３情報および前記第４情報を算出することを特徴とする付記１〜６のいずれか一つに記載の計測装置。
【０２４０】
（付記８）前記記憶部は、前記第２通信装置からの応答メッセージのうちの、遅延応答によって前記第２通信装置から送信された応答メッセージを除く応答メッセージのそれぞれについて、前記シーケンス番号と、前記送信時刻情報および前記第１通信装置への到着時刻と、を記憶することを特徴とする付記７に記載の計測装置。
【０２４１】
（付記９）前記記憶部は、前記第２通信装置からの応答メッセージについて、前記第１通信装置が前記第２通信装置へデータを送信するレートを示す情報に応じて記録対象とする応答メッセージを間引いて、前記シーケンス番号と、前記送信時刻情報および前記第１通信装置への到着時刻と、を記憶することを特徴とする付記７または８に記載の計測装置。
【０２４２】
（付記１０）前記第３情報／第４情報取得対象とした応答メッセージの対を、その第３情報で示されるデータ量が、ラウンドトリップタイム内において前記第１通信装置が前記第２通信装置へ送信し得るデータ量以下であるように応答メッセージの対を選択することを特徴とする付記１〜９のいずれか一つに記載の計測装置。
【０２４３】
（付記１１）前記第３情報／第４情報取得対象とする応答メッセージの対は、ネットワークの変動の大きさに応じ、その第４情報で示される時間経過が変動するように応答メッセージの対を選択することを特徴とする付記１〜１０のいずれか一つに記載の計測装置。
【０２４４】
（付記１２）自装置から宛先通信装置へデータの送信を行う通信装置において、そのデータ送信に対する前記宛先通信装置からの任意の２つの応答メッセージについて、前記宛先通信装置により付されたそれぞれの送信時刻情報の差を示す第１情報と、
前記２つの応答メッセージの自装置への到着時刻の差を示す第２情報と、
自装置から前記宛先通信装置への送信データに対する、前記第１情報／第２情報取得対象としたものと同じ、あるいは異なる任意の２つの応答メッセージに対し、その２つの応答メッセージの間において宛先通信装置へ到着した送信データの合計のデータ量を示す第３情報と、
その第３情報算出の対象とした２つの応答メッセージの前記宛先通信装置により付された送信時刻情報の差を示す第４情報と、
に基づいて、前記第１情報と前記第２情報とに基づく自装置と前記宛先通信装置との間の時間換算係数と、前記第３情報と前記第４情報とに基づくレートと、を乗じて得られる値を算出することにより前記宛先通信装置における到着レートを算出する算出部と、
前記算出部によって算出された到着レートに基づく、自装置から前記宛先通信装置への送信データの送出レートの制御を行う制御部と、
を備えることを特徴とする通信装置。
【０２４５】
（付記１３）前記制御部は、前記第１情報と前記第２情報との比が、時間換算係数の複数の範囲の中に含まれていない場合は、前記到着レートに基づく前記送出レートの制御を行わないことを特徴とする付記１２に記載の通信装置。
【０２４６】
（付記１４）前記制御部は、複数組の前記２つの応答メッセージについての前記時間換算係数を算出し、算出した各時間換算係数のばらつきが所定の大きさ以上である場合は前記到着レートに基づく前記送出レートの制御を行わないことを特徴とする付記１２または１３に記載の通信装置。
【０２４７】
（付記１５）前記制御部は、前記算出部によって算出された到着レートのピーク値が送信可能帯域の上限値となるように前記送出レートの制御を行うことを特徴とする付記１２〜１４のいずれか一つに記載の通信装置。
【０２４８】
（付記１６）前記制御部は、前記算出部によって算出された到着レートのうちの、所定期間以前の到着レートを除いた到着レートのピーク値に基づいて前記送出レートの制御を行うことを特徴とする付記１５に記載の通信装置。
【０２４９】
（付記１７）前記制御部は、
送信データの受領に対応し前記宛先通信装置が送信する任意の２つの応答メッセージにおける前記送信時刻情報の差と前記時間換算係数とを乗算して得られる値に対する、前記２つの応答メッセージそれぞれに対応する送信データを自装置が送信を行った時刻の差に基づいて自装置からの送信信号の遅延時間の変動を計測し、
前記遅延時間の変動の計測結果に基づいて前記送出レートの制御を行う、
ことを特徴とする付記１２〜１６のいずれか一つに記載の通信装置。
【０２５０】
（付記１８）前記制御部は、前記遅延時間の変動の計測結果に基づいて、前記遅延時間が増加している場合は前記送出レートを低下させることを特徴とする付記１７に記載の通信装置。
【０２５１】
（付記１９）前記制御部は、前記到着レートに基づく前記送出レートの目標値と現在の前記送出レートとの相違に応じて、前記送出レートの制御量を変化させることを特徴とする付記１２〜１８のいずれか一つに記載の通信装置。
【０２５２】
（付記２０）前記制御部は、前記遅延時間の変動の計測結果に基づいて、前記遅延時間が増加している場合は、前記算出部によって算出された到着レートに近づくように前記送出レートを制御することを特徴とする付記１７に記載の通信装置。
【０２５３】
（付記２１）第１通信装置と第２通信装置との間の通信を中継する中継装置であって、
前記第１通信装置から前記第２通信装置への送信データに対する前記第２通信装置からの任意の２つの応答メッセージにおける前記第２通信装置により付された送信時刻情報の差を示す第１情報と、
前記２つの応答メッセージの前記中継装置への到着時刻の差を示す第２情報と、
前記第１通信装置から前記第２通信装置への送信データに対する、前記第１情報／第２情報取得対象としたものと同じ、あるいは異なる任意の２つの応答メッセージに対し、その２つの応答メッセージの間において前記第２通信装置へ到着した送信データの合計のデータ量を示す第３情報と、
その第３情報算出の対象とした２つの応答メッセージの前記第２通信装置により付された送信時刻情報の差を示す第４情報と、
に基づいて、前記第１情報と前記第２情報とに基づく前記第１通信装置と前記第２通信装置との間の時間換算係数と、前記第３情報と前記第４情報とに基づくレートと、を乗じて得られる値を算出することにより前記第２通信装置における到着レートを算出する算出部と、
を備えることを特徴とする中継装置。
【０２５４】
（付記２２）第１通信装置から第２通信装置への送信データに対する前記第２通信装置からの応答メッセージのうち任意の２つの応答メッセージに対し、前記第２通信装置により付されたそれぞれの送信時刻情報の差を示す第１情報と、
前記２つの応答メッセージの前記第１通信装置への到着時刻の差を示す第２情報と、
前記第１通信装置から前記第２通信装置への送信データに対する、前記第１情報／第２情報取得対象としたものと同じ、あるいは異なる任意の２つの応答メッセージに対し、その２つの応答メッセージの間において前記第２通信装置へ到着した送信データの合計のデータ量を示す第３情報と、
その第３情報算出の対象とした２つの応答メッセージの前記第２通信装置により付された送信時刻情報の差を示す第４情報と、
に基づいて、前記第１情報と前記第２情報とに基づく前記第１通信装置と前記第２通信装置との間の時間換算係数と、前記第３情報と前記第４情報とに基づくレートと、を乗じて得られる値を算出することにより前記第２通信装置における到着レートを算出することを特徴とする計測方法。
【０２５５】
（付記２３）コンピュータに、
第１通信装置から第２通信装置への送信データに対する前記第２通信装置からの応答メッセージのうち任意の２つの応答メッセージに対し、前記第２通信装置により付されたそれぞれの送信時刻情報の差を示す第１情報と、
前記２つの応答メッセージの前記第１通信装置への到着時刻の差を示す第２情報と、
前記第１通信装置から前記第２通信装置への送信データに対する、前記第１情報／第２情報取得対象としたものと同じ、あるいは異なる任意の２つの応答メッセージに対し、その２つの応答メッセージの間において前記第２通信装置へ到着した送信データの合計のデータ量を示す第３情報と、
その第３情報算出の対象とした２つの応答メッセージの前記第２通信装置により付された送信時刻情報の差を示す第４情報と、
に基づいて、前記第１情報と前記第２情報とに基づく前記第１通信装置と前記第２通信装置との間の時間換算係数と、前記第３情報と前記第４情報とに基づくレートと、を乗じて得られる値を算出することにより前記第２通信装置における到着レートを算出する処理を実行させることを特徴とする計測プログラム。
【符号の説明】
【０２５６】
１００，２００  通信システム
１０１  計測装置
１１０  第１通信装置
１１１−１〜１１１−ｋ  送信データ
１２０  第２通信装置
１２１−１〜１２１−ｋ  応答メッセージ
２０１  インターネット
２０２  無線アクセス網
２１１〜２１４，３００  サーバ
２２１，２２２  クライアント
３１０，１３１０，１３３０  リンクレイヤ処理部
３１１，１３１１，１３３２  リンクレイヤ受信部
３１２，１３１４，１３３１  リンクレイヤ送信部
３２１  受信データ組立部
３２２  受信データバッファ
３３０  通信アプリケーション実行部
３４１  送信データバッファ
３４２  送信パケット構築部
３４３，１３２２  送信キュー
３５１  Ａｃｋ情報解析部
３５２  Ａｃｋ情報記録部
３５２ａ，７１０，１１１０  記録テーブル
３５３  クロック比計測部
３５４  相手到着レート計測部
３５５  送信遅延変動計測部
３５６  ＲＴＴ計測部
３５７  送出レート制御部
３５８  再送制御部
３５９  応答待バッファ
３８０  通信装置
３８１  ＣＰＵ
３８２  ＲＡＭ
３８３  不揮発メモリ
３８４  通信インタフェース
３８９  バス
４１０  フォーマット
４１１  オプション領域
４２０，４３０  エンコード方式
６０１  到着レート
６０２〜６０５  計測結果
６１０  物理帯域上限
６２０  他トラフィック
７２０，１１２０，１１３０  算出結果
８００  クロック比テーブル
１３００  中継装置
１３１２  送信キュー群
１３１３  スケジューラ
１３２１，１３４１  コネクション識別処理部
１３２３  コネクション管理部
１３２３ａ  コネクション管理テーブル
１３４２  送信パケットスケジュール部
１３５１  コネクション送出レート制御部
【図１】
0006004116.tif 000002
【図２】
0006004116.tif 000003
【図３Ａ】
0006004116.tif 000004
【図３Ｂ】
0006004116.tif 000005
【図３Ｃ】
0006004116.tif 000006
【図４Ａ】
0006004116.tif 000007
【図４Ｂ】
0006004116.tif 000008
【図４Ｃ】
0006004116.tif 000009
【図５】
0006004116.tif 000010
【図６】
0006004116.tif 000011
【図７】
0006004116.tif 000012
【図８】
0006004116.tif 000013
【図９】
0006004116.tif 000014
【図１０】
0006004116.tif 000015
【図１１】
0006004116.tif 000016
【図１２】
0006004116.tif 000017
【図１３Ａ】
0006004116.tif 000018
【図１３Ｂ】
0006004116.tif 000019
【図１４】
0006004116.tif 000020