(57)【特許請求の範囲】
【請求項１】
第一の記憶部が記憶する、パケットの通信時刻及び応答確認番号を含む通信履歴において通信時刻の間隔又は応答確認番号の間隔が閾値以上である連続する二つのパケットの間の、通信時刻及び応答確認番号を有する追加パケットを生成し、
前記第一の記憶部に記憶されている各パケット及び前記追加パケットを、それぞれの通信時刻に基づく時間間隔で所定の宛先に送信する処理をコンピュータに実行させる試験プログラム。
【請求項２】
前記送信する処理において送信される送信パケットの送信履歴と、該パケットに応じて受信される受信パケットの受信履歴とを第二の記憶部に記録する処理を前記コンピュータに実行させ、
前記送信する処理は、前記追加パケットの応答確認番号が、当該追加パケットを送信するまでに前記第二の記憶部に記録されている前記受信パケットのシーケンス番号よりも小さい場合は、当該追加パケットを送信しない請求項１記載の試験プログラム。
【請求項３】
前記追加パケットを生成する処理は、前記通信履歴において通信時刻の間隔又は応答確認番号の間隔が閾値以上である連続する二つの送信パケットの間に、複数の前記追加パケットを生成する請求項１又は２記載の試験プログラム。
【請求項４】
パケットの通信時刻及び応答確認番号を含む通信履歴を記憶した第一の記憶部と、
前記通信履歴において通信時刻の間隔又は応答確認番号の間隔が閾値以上である連続する二つのパケットの間の、通信時刻及び応答確認番号を有する追加パケットを生成する追加部と、
前記第一の記憶部に記憶されている各パケット及び前記追加パケットを、それぞれの通信時刻に基づく時間間隔で所定の宛先に送信する送信部とを有する試験装置。
【請求項５】
第一の記憶部が記憶する、パケットの通信時刻及び応答確認番号を含む通信履歴において通信時刻の間隔又は応答確認番号の間隔が閾値以上である連続する二つのパケットの間の、通信時刻及び応答確認番号を有する追加パケットを生成し、
前記第一の記憶部に記憶されている各パケット及び前記追加パケットを、それぞれの通信時刻に基づく時間間隔で所定の宛先に送信する処理をコンピュータが実行する試験方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータの性能評価試験を行う試験プログラム、試験装置、及び試験方法に関する。
【背景技術】
【０００２】
従来、クライアント−サーバ間の性能評価に関する技術が開示されている（例えば、特許文献１、２を参照）。一方で、システムの移行等を行う際、移行先となる検証系サーバを迅速かつ高精度に検証するための性能評価試験が行われている。
【０００３】
図１は、従来の検証系サーバに関する性能評価試験処理の第一の例を説明するための図である。同図において、検証系サーバＢは、実動系サーバＡ及び試験端末Ｃに対して遠隔地に配置されていることとする。例えば、実動系サーバＡ及び試験端末Ｃは、大阪に配置されている。検証系サーバＢは、東京に配置されている。
【０００４】
実動系サーバＡは、実際に稼動しているコンピュータである。検証系サーバＢは、実動系サーバＡから移行予定のコンピュータである。試験端末Ｃは、実動系サーバＡとの通信に係るパケットをキャプチャし、キャプチャしたパケットを実動系サーバＡと同一のシーケンスパターンで検証系サーバＢに流す。そうすることにより、実動系サーバＡに対して行われた通信と同一パターン（パケットとその応答パケット）の通信によって検証系サーバＢの試験を実施することができる。
【０００５】
図２は、従来の検証系サーバに関する性能評価試験処理の第二の例を説明するための図である。同図において、実動系サーバＡ及び試験端末Ｃ１は、大阪に配置されている。検証系サーバＢ及び試験端末Ｃ２は、東京に配置されている。試験端末Ｃ１は、実動系サーバＡとの間でパケット通信を行う。試験端末Ｃ２は、検証系サーバＢとの間でパケット通信を行う。この際、試験端末Ｃ２は、試験端末Ｃ１と同一のシーケンスパターンで、パケットを検証系サーバＢに送信する。それぞれの試験端末Ｃにおいてキャプチャされたパケットに基づいて、検証系サーバＢに関して実動系サーバＡに対する相対的な性能評価が行われる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−８６４８号公報
【特許文献２】特開平９−６２６０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、第一の例（図１）の場合、試験端末Ｃに対して、実動系サーバＡ及び検証系サーバＢのそれぞれの通信距離は異なる。したがって、実動系サーバＡと検証系サーバＢとでのＲＴＴ（Ｒｏｕｎｄ Ｔｒｉｐ Ｔｉｍｅ：往復遅延時間）の差が実動系サーバＡ及び検証系サーバＢの処理間隔に影響する。すなわち、検証系サーバＢのパケット送受信間隔が実動系サーバＡのパケット送受信間隔に比べ大きくなる。その結果、検証系サーバＢに関して、実動系サーバＡと同一負荷による性能評価ができず、性能評価の品質の低下を招くという問題があった。
【０００８】
一方、第二の例（図２）の場合、同一負荷で試験するためには、試験実施者は実動系サーバＡの通信に関して試験装置Ｃ１によってキャプチャされたパケットシーケンスを示すデータ（キャプチャデータ）を持参して、検証系サーバＢのある現地（東京）に赴く必要がある。試験実施者は、キャプチャデータに基づくパケットの送出を試験装置Ｃ２に実行させる。したがって、試験実施者の移動等による労力が発生し、試験実施者の負担が増大するという問題があった。
【０００９】
本発明は、コンピュータの性能評価試験を適切に実行することのできる試験プログラム、試験装置、及び試験方法の提供を目的とする。
【課題を解決するための手段】
【００１０】
そこで一つの案では、試験プログラムは、第一の記憶部が記憶する、パケットの通信時刻及び応答確認番号を含む通信履歴において通信時刻の間隔又は応答確認番号の間隔が閾値以上である連続する二つのパケットの間の、通信時刻及び応答確認番号を有する追加パケットを生成し、前記第一の記憶部に記憶されている各パケット及び前記追加パケットを、それぞれの通信時刻に基づく時間間隔で所定の宛先に送信する処理をコンピュータに実行させる。
【発明の効果】
【００１１】
コンピュータの性能評価試験を適切に実行すること。
【図面の簡単な説明】
【００１２】
【図１】従来の検証系サーバに関する性能評価試験処理の第一の例を説明するための図である。
【図２】従来の検証系サーバに関する性能評価試験処理の第二の例を説明するための図である。
【図３】本発明の実施の形態におけるネットワーク構成例を示す図である。
【図４】本発明の実施の形態における試験装置のハードウェア構成例を示す図である。
【図５】本発明の実施の形態における基本的な処理内容を説明するための図である。
【図６】実動系と検証系とにおいて振る舞いが異なるケースの一例を説明するための図である。
【図７】追加パケットの第一の追加例を説明するための図である。
【図８】追加パケットのＡＣＫ番号の例を説明するための第一の図である。
【図９】追加パケットのＡＣＫ番号の例を説明するための第二の図である。
【図１０】追加パケットの個数の例を説明するための第一の図である。
【図１１】追加パケットの個数の例を説明するための第二の図である。
【図１２】追加パケット間のＡＣＫ番号の刻み幅の例を説明するための第一の図である。
【図１３】追加パケット間のＡＣＫ番号の刻み幅の例を説明するための第二の図である。
【図１４】追加パケットの送信タイミングの一例を説明するための図である。
【図１５】追加パケットの最終許容送信時刻を説明するための図である。
【図１６】本発明の実施の形態における試験装置の機能構成例を示す図である。
【図１７】試験装置によるパケットのキャプチャ処理の処理手順の一例を説明するためのフローチャートである。
【図１８】実動系通信履歴記憶部の構成例を示す図である。
【図１９】試験装置による試験データ生成処理の処理手順の一例を説明するためのフローチャートである。
【図２０】追加パケットの生成処理の処理手順の一例を説明するためのフローチャートである。
【図２１】試験用データ記憶部の構成例を示す図である。
【図２２】試験装置による性能評価試験の実行処理の処理手順の一例を説明するためのフローチャートである。
【図２３】ＡＣＫ番号の変換について説明するための図である。
【図２４】第一の性能評価方法を説明するための図である。
【図２５】検証系サーバに関する第一の性能評価処理の処理手順の一例を説明するためのフローチャートである。
【図２６】第二の性能評価方法を説明するための図である。
【図２７】検証系サーバに関する第二の性能評価処理の処理手順の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面に基づいて本発明の実施の形態を説明する。図３は、本発明の実施の形態におけるネットワーク構成例を示す図である。
【００１４】
同図において、クライアント装置２０と実動系サーバ３０ａとは、ネットワークｎ１を介して通信可能に接続されている。実動系サーバ３０ａは、例えば、実際に稼動している現用系のコンピュータである。クライアント装置２０は、実動系サーバ３０ａに対して処理要求を行うコンピュータである。
【００１５】
ＴＡＰ４０は、ネットワークｎ１を流れる信号を試験装置１０に分岐させる装置（ネットワーク・タップ）である。
【００１６】
試験装置１０は、検証系サーバ３０ｂの性能評価試験のための処理を実行するコンピュータである。試験装置１０は、ＴＡＰ４０によって分岐される信号を監視することにより、ネットワークｎ１において、クライアント装置２０と実動系サーバ３０ａとの間でやりとりされるパケットをキャプチャする。試験装置１０は、キャプチャされたパケットを利用して、検証系サーバ３０ｂに関する性能評価試験のための処理を実行する。
【００１７】
検証系サーバ３０ｂは、実動系サーバ３０ａから移行予定のコンピュータであり、本実施の形態において、性能評価試験の対象とされる。検証系サーバ３０ｂは、基本的に、実動系サーバ３０ａと同じ機能を有する。同一機能に関して、実動系サーバ３０ａに対する相対的な性能が評価対象とされるからである。
【００１８】
なお、本実施の形態において、試験装置１０、クライアント装置２０、及び実動系サーバ３０ａは、大阪に配置されていることとする。検証系サーバ３０ｂは、東京に配置されていることとする。斯かる配置関係は、検証系サーバ３０ｂと試験装置１０との距離は、実動系サーバ３０ａとクライアント装置２０との距離に対して必ずしも一致しないことを示すための便宜的なものである。
【００１９】
また、以下において、クライアント装置２０と実動系サーバ３０ａとが構成するシステム系を「実動系」という。試験装置１０と検証系サーバ３０ｂとが構成するシステム系を「検証系」という。
【００２０】
図４は、本発明の実施の形態における試験装置のハードウェア構成例を示す図である。図４の試験装置１０は、それぞれバスBで相互に接続されているドライブ装置１００と、補助記憶装置１０２と、メモリ装置１０３と、ＣＰＵ１０４と、インタフェース装置１０５とを有する。
【００２１】
試験装置１０での処理を実現するプログラムは、例えば、記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００２２】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って試験装置１０に係る機能を実行する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００２３】
なお、記録媒体１０１の一例としては、ＣＤ−ＲＯＭ、ＤＶＤディスク、又はＵＳＢメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置１０２の一例としては、ＨＤＤ（Hard Disk Drive）又はフラッシュメモリ等が挙げられる。記録媒体１０１及び補助記憶装置１０２のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
【００２４】
図５は、本発明の実施の形態における基本的な処理内容を説明するための図である。
【００２５】
同図において、クライアント装置２０は、実動系サーバ３０ａへの上り方向のＡＣＫパケットＰａ１、Ｐｂ２、及びＰａ３を順番に送信している。ＡＣＫパケットＰａ１、Ｐｂ２、Ｐａ３のぞれぞれは、試験装置１０によって、時刻Ｔ１、時刻Ｔ２、時刻Ｔ３のタイミングでキャプチャされている。試験装置１０は、キャプチャしたＡＣＫパケットの内容と、キャプチャした時刻とを関連付けて記憶しておく。以下、記憶されたデータを「キャプチャデータ」という。
【００２６】
また、実動系サーバ３０ａは、クライアント装置２０への下りのパケットＰｃ１、Ｐｃ２、Ｐｃ３、Ｐｃ４、Ｐｃ５、及びＰｃ６を順番に送信している。これらの下りのパケットに関しても、試験装置１０によってキャプチャされる。試験装置１０は、キャプチャしたパケットの内容と、キャプチャした時刻とを関連付けてキャプチャデータとして記憶しておく。
【００２７】
試験装置１０は、キャプチャデータに含まれるパケットのデータ（ＩＰアドレス等）に関して、検証系に適合するように変換を行い、上り方向のパケットの通信履歴を再現させることにより、検証系サーバ３０ｂに関する性能評価のための試験を行う。具体的には、試験装置１０は、ＡＣＫパケットＰｂ１、Ｐｂ２、及びＰｂ３を、それぞれ、時刻Ｔ１＋Ｔｏｆｆｓｅｔ、時刻Ｔ２＋Ｔｏｆｆｓｅｔ、時刻Ｔ３＋Ｔｏｆｆｓｅｔに、検証系サーバ３０ｂ宛に送信する。ここで、Ｔｏｆｆｓｅｔは、試験の開始時刻である。なお、試験装置１０は、上り方向のパケットに対する応答パケットの受信は待機しない。したがって、ＡＣＫパケットＰｂ１、Ｐｂ２、及びＰｂ３の時間間隔は、ＡＣＫパケットＰａ１、Ｐｂ２、及びＰａ３の時間間隔と一致させることができる。なお、ＡＣＫパケットＰｂ１、Ｐｂ２、Ｐｂ３は、それぞれ、ＡＣＫパケットＰａ１、Ｐｂ２、Ｐａ３に対応するパケットである。
【００２８】
検証系においては、各パケットのＡＣＫ番号（確認応答番号）及びシーケンス番号の相対的な関係についても、実動系においてキャプチャされた関係が維持される。相対的な関係とは、具体的には、ＡＣＫ番号及びシーケンス番号の間隔である。同図では、実動系の各パケットのＡＣＫ番号及びシーケンス番号に対して、１００００が加算され値が、検証系において対応する各パケットのＡＣＫ番号又はシーケンス番号とされている。
【００２９】
検証系における各上り方向のパケットの時間間隔を、実動系において対応する各パケットの時間間隔に一致させることで、検証系サーバ３０ｂは、実動系サーバ３０ａと同じ時間間隔で同様のパケットが受信する。その結果、検証系サーバ３０ｂに対して、実動系サーバ３０ａと同一の負荷を与えることができる。すなわち、検証系サーバ３０ｂが遠隔地に設置されていることの試験への影響を吸収することができる。
【００３０】
また、下り方向のパケットの時間間隔についても、検証系サーバ３０ｂが遠隔地に設置されていることの影響を吸収することができる。すなわち、検証系サーバ３０ｂの挙動が、実動系サーバ３０ａと完全に同じである場合、検証系サーバ３０ｂが送信する下り方向のパケットＰｔ１、Ｐｔ２、Ｐｔ３、Ｐｔ４、Ｐｔ５、及びＰｔ６の時間間隔は、実動系サーバ３０ａが送信する下り方向のパケットの時間間隔と一致するはずである。一方、検証系サーバ３０ｂの挙動が、実動系サーバ３０ａと異なる場合、検証系サーバ３０ｂが送信する下り方向のパケットの時間間隔は、実動系サーバ３０ａが送信する下り方向のパケットの時間間隔と異なるはずである。
【００３１】
したがって、例えば、検証系における下り方向のパケットの時間間隔を、実動系における下り方向のパケットの時間間隔と比較することにより、検証系サーバ３０ｂについて、実動系サーバ３０ａと同一負荷に基づく性能評価を行うことができる。当該性能評価は、実動系サーバ３０ａに対する相対的なものである。
【００３２】
なお、同図では、上り方向のパケットの送信元が試験装置１０に変換された例が示されている。そのため、検証系サーバ３０ｂから送信される下り方向のパケットは、試験装置１０宛となっている。但し、上り方向のパケットの送信元は、クライアント装置２０のままであってもよい。この場合、試験装置１０は、検証系サーバ３０ｂからの下り方向のパケットをキャプチャして、その履歴を記憶すればよい。
【００３３】
図５に示される試験方法によれば、検証系サーバ３０ｂが遠隔地に配置されている問題を解消することができる。しかし、実動系サーバ３０ａと検証系サーバ３０ｂとの間で、ハードウェア構成及びソフトウェア構成を同一のものとしても、両者の振る舞いが異なるケースが、本願発明者の実験により観測されている。例えば、図６に示されるような現象が発生する場合があることが確認されている。
【００３４】
図６は、実動系と検証系とにおいて振る舞いが異なるケースの一例を説明するための図である。
【００３５】
同図の実動系において、実動系サーバ３０ａからは、パケット群Ｐｃ１１が、ウィンドウ制御によって連続して送信されている。実動系サーバ３０ａは、シーケンス番号が「５００００」であるパケットの送信後、パケットの送信を停止し、待機状態となっている。パケット群Ｐｃ１１が送信される間、クライアント装置２は、上り方向のパケットＰａ１１〜Ｐａ１３を実動系サーバ３０ａに送信している。その後、実動系サーバ３０ａが待機状態中に、クライアント装置２０は、ＡＣＫパケットＰａ１４を送信する。ＡＣＫパケットＰａ１４の受信に応じ、実動系サーバ３０ａは、パケットＰｃ１２を送信する。
【００３６】
検証系において、試験装置１０は、実動系のパケットＰａ１１〜Ｐａ１４と同じ時間間隔で、上り方向のパケットＰｂ１１〜Ｐｂ１４を送信している。なお、同図において、検証系における各パケットのＡＣＫ番号は、説明の便宜上、実動系において対応するパケットのＡＣＫ番号と一致させている。
【００３７】
一方、検証系サーバ３０ｂは、パケット群Ｐｔ１１の送信後、待機状態となっている。パケット群Ｐｔ１１に含まれるパケット数は、パケット群Ｐｃ１１に含まれるパケット数より少ない。その結果、パケット群Ｐｔ１１において最後に送信されたパケットのシーケンス番号は、「４００００」となっている。
【００３８】
その後、検証系サーバ３０ｂは、シーケンス番号が「４００００」の状態で、ＡＣＫ番号が「５１５００」であるＡＣＫパケットＰｂ１４を受信する。この時点で、検証系サーバ３０ｂでは、上り方向のパケットのＡＣＫ番号が、下り方向のパケットのシーケンス番号を超えてしまっている。したがって、検証系サーバ３０ｂは、この現象を異常と判断し、以降のパケットの送信を停止してしまう。
【００３９】
なお、同図において、実動系サーバ３０ａ又は検証系サーバ３０ｂより送信されるパケットを示す矢印の単位は、必ずしもパケット単位ではない。一つの矢印によって、複数のパケットが表現されている。
【００４０】
本願発明者は、検証系の通信履歴（キャプチャデータ）を解析した結果、上り方向のパケットに関してＡＣＫ番号の間隔が相対的に大きいときに、このような現象（以下、「ＡＣＫ番号とシーケンス番号との逆転現象」という。）が発生する可能性が高いことに着眼した。そして、実動系サーバ３０ａと検証系サーバ３０ｂとの振る舞いの相違の代表的な要因は、ＴＣＰ／ＩＰ通信における制御機構に有ることに想到した。
【００４１】
すなわち、ＴＣＰ／ＩＰ通信では、通信開始後、クライアント（本実施の形態のクライアント装置２０又は試験装置１０）は、サーバ（本実施の形態の実動系サーバ３０ａ又は検証系サーバ３０ｂ）からパケットを２個受信するごとに１個のＡＣＫパケットを返信する。その後、時間経過に応じて、クライアントは、サーバより連続して多数（２個以上）のパケットを受信し、それに対して１個のＡＣＫパケットを返信する。これは、通信の効率化を図るための制御であり、ウィンドウ制御と呼ばれる。
【００４２】
サーバが一度に送信できるパケットの量は、サーバの輻輳ウィンドウサイズや広告ウィンドウサイズによって定まる。輻輳ウィンドウサイズは、サーバのパケットの送信に応じて徐々に縮退し、ＡＣＫパケットの受信に応じて徐々に回復する。但し、回復の度合いに対して縮退の度合いの方が大きければ、輻輳ウィンドウサイズは、いずれ使い尽くされる（枯渇する）。輻輳ウィンドウサイズが使い尽くされると、サーバはパケットの送信を停止し、待機状態となる。待機状態において、クライアントからのＡＣＫパケットが受信されると、輻輳ウィンドウサイズは少し回復する。その結果、サーバは、パケットの送信が可能となる。
【００４３】
上記をふまえて、図６の例を改めて参照すると、実動系サーバ３０ａにおいては、シーケンス番号が「５００００」であるパケットの送信後に、輻輳ウィンドウサイズが使い尽くされているものと考えられる。そして、ＡＣＫパケットＰａ１４の受信によって、輻輳ウィンドウサイズが回復し、その結果、実動系サーバ３０ａは、パケットＰｃ１２の送信が可能となったものと考えられる。
【００４４】
同様に、検証系サーバ３０ｂにおいては、シーケンス番号が「４００００」であるパケットの送信後に、輻輳ウィンドウサイズが使い尽くされているものと考えられる。すなわち、図６では、何らかの原因により、検証系サーバ３０ｂの輻輳ウィンドウサイズが、実動系サーバ３０ａの輻輳ウィンドウサイズより小さくなり、検証系サーバ３０ｂが連続して送信可能なパケットの数が実動系サーバ３０ａより少なくなってしまう状態が発生していることが考えられる。
【００４５】
理論的には、或る二つのサーバが同一の性能である場合、同一時間間隔でＡＣＫパケットを受信すれば輻輳ウィンドウサイズの変動は実動系と検証系で変わらないはずである。しかし、実際には通信経路上にあるネットワーク機器やサーバのバッファの大きさの揺らぎ等が障壁となり、輻輳ウィンドウサイズの変動が実動系と検証系で変わることは十分に発生しうる。
【００４６】
ＡＣＫ番号とシーケンス番号との逆転現象が発生した場合、検証系サーバ３０ｂは、パケットの送信を停止してしまうため、試験の継続が困難となる。そのため、試験実施者は、多大な作業負担を被ることになる。
【００４７】
そこで、本実施の形態では、ＡＣＫ番号とシーケンス番号との逆転現象を回避した例についても説明する。
【００４８】
本実施の形態において、試験装置１０は、実動系のキャプチャデータ（通信履歴）を解析し、上り方向のＡＣＫパケットに関して、ＡＣＫ番号の間隔を計測する。すなわち、試験装置１０は、上り方向の各ＡＣＫパケットのＡＣＫ番号について、直前のＡＣＫパケットのＡＣＫ番号との差分を算出する。閾値以上の間隔（差分）が検出された場合、試験装置１０は、当該間隔に係る二つのＡＣＫパケットの間（以下、「対象パケット間」という。）において、上り方向のＡＣＫパケット（以下、「追加パケット」という。）を追加送信する。すなわち、追加パケットは、実動系におけるパケットを再現するものではなく、検証系においてのみ送信されるＡＣＫパケットである。なお、対象パケット間に係る二つのＡＣＫパケットのうち、前のＡＣＫパケットを、以下「前パケット」といい、後のＡＣＫパケットを、以下「後パケット」という。
【００４９】
追加パケットが追加送信されるのは、後パケットのＡＣＫ番号が、検証系サーバ３０ｂのシーケンス番号より大きくなる可能性が高いからである。追加パケットが送信されることにより、検証系サーバ３０ｂの輻輳ウィンドウサイズの回復と、それに伴う検証系サーバ３０ｂによるパケットの送信の再開が期待できる。その結果、ＡＣＫ番号とシーケンス番号との逆転現象の発生の回避が期待できる。なお、ＡＣＫパケット（追加パケットも含む。）の処理負荷は低いため、追加パケットの追加による検証系サーバ３０ｂの処理負荷の増加は、無視できる程度に小さいものと考えられる。
【００５０】
図７は、追加パケットの第一の追加例を説明するための図である。図７中、図６と同一部分には同一符号を付し、その説明は適宜省略する。
【００５１】
図７の実動系において、ＡＣＫパケットＰａ１３のＡＣＫ番号（１６０００）とＡＣＫパケットＰａ１４のＡＣＫ番号（５１５００）とは乖離している。試験装置１０は、二つのＡＣＫ番号の間隔と閾値との比較に基づいて斯かる状態（ＡＣＫ番号の乖離状態）を検出すると、二つのＡＣＫパケットの間に追加パケットを追加する。すなわち、試験装置１０は、パケットＰａ１３を再現するパケットＰｂ１３と、パケットＰａ１４を再現するパケットＰｂ１４の間で、追加パケットＰｄ１を送信する。同図の例では、追加パケットのＡＣＫ番号は、前パケットであるパケットＰｂ１３のＡＣＫ番号に１を加算した「１６００１」とされている。なお、図７以降の図面において、追加パケットは、他のパケットとの区別を明確にするために、破線の矢印によって表現されている。
【００５２】
検証系サーバ３０ｂでは、追加パケットＰｄ１の受信により、輻輳ウィンドウサイズが回復する。それに伴い、パケット群Ｐｔ１１には、例えば、シーケンス番号が「５００００」であるパケットまでが含まれるようになる。その結果、検証系サーバ３０ｂにおいてＡＣＫパケットＰｂ１４が受信された際に、ＡＣＫ番号とシーケンス番号との逆転現象の発生が回避される。
【００５３】
なお、追加パケットの追加の要否の判断基準として、ＡＣＫ番号の間隔ではなく、パケットの通信時刻（キャプチャされた時刻）の間隔（時間間隔）が用いられてもよい。二つのパケットのＡＣＫ番号の間隔と時間間隔との間には相関関係が有るからである。すなわち、ＡＣＫ番号の乖離は、大量のパケットが実動系サーバ３０ａより送信されたことにより発生するところ、大量のパケットの送信には、時間を要するからである。
【００５４】
ところで、本実施の形態では、追加パケットのＡＣＫ番号が、検証系サーバ３０ｂのシーケンス番号を追い越すことがあってはならないという制約がある。したがって、追加パケットの送信時間や追加個数、追加パケットのＡＣＫ番号については適切な値を考慮する必要がある。図７の例では、追加パケットは一つである。また、追加パケットＰｄ１の送信時間は、前パケットであるＡＣＫパケットＰｂ１３の送信直後である。更に、前パケットのＡＣＫ番号に１が加算された値が、追加パケットのＡＣＫ番号とされている。これは、追加パケットの一つの追加例に過ぎない。
【００５５】
図８は、追加パケットのＡＣＫ番号の例を説明するための第一の図である。図８中、図７と同一部分には同一符号を付し、その説明は適宜省略する。
【００５６】
図８においては、追加パケットのＡＣＫ番号に関する他の例が示されている。同図では、前パケット（パケットＰｂ１３）のＡＣＫ番号に対して、検証系サーバ３０ｂの最大セグメント長（Maximum Segment Size：以下、「ＭＳＳ」と記す。）を整数倍した値が加算された例が示されている。ＴＣＰでは、送信データはセグメントと呼ばれる単位に分割されて送信される。この分割単位の最大サイズが、最大セグメント長（ＭＳＳ）である。
【００５７】
本実施の形態において、検証系サーバ３０ｂのＭＳＳは、１５００バイトであるとする。したがって、同図では、ＡＣＫパケットＰｂ１３のＡＣＫ番号（１６０００）に対して（１×ＭＳＳ＝１５００）が加算された値（１７５００）が、追加パケットＰｄ２のＡＣＫ番号とされている。
【００５８】
なお、同図の追加パケットＰｄ２は、図７の追加パケットＰｄ１より遅れた時間に送信されている。これは、追加パケットは、必ずしも前パケットの直後に送信されなくてもよいことを示したものである。その結果、検証系サーバ３０ｂから送信されるパケット群Ｐｔ１１の最後のパケットのシーケンス番号は、「４００００」となっている。その後、追加パケットＰｄ２が検証系サーバ３０ｂにおいて受信されることにより、検証系サーバ３０ｂの輻輳ウィンドウが回復し、シーケンス番号「５００００」までのパケット群Ｐｔ１２が検証系サーバ３０ｂより送信されている。その結果、検証系サーバ３０ｂにおいてＡＣＫパケットＰｂ１４が受信された際に、ＡＣＫ番号とシーケンス番号との逆転現象の発生が回避される。
【００５９】
図９は、追加パケットのＡＣＫ番号の例を説明するための第二の図である。図９中、図８と同一部分には同一符号を付し、その説明は適宜省略する。
【００６０】
図９の趣旨は、図８と同様である。但し、図９において、追加パケットＰｄ３のＡＣＫ番号は、前パケットＰｂ１３のＡＣＫ番号（１６０００）に（２×ＭＳＳ）が加算された値（１９０００）となっている。
【００６１】
なお、追加パケットのＡＣＫ番号は、前パケットＰｂ１３のＡＣＫ番号（１６０００）より大きく、後パケット（ＡＣＫパケットＰｂ１４）のＡＣＫ番号（５１５００）より小さい値でなければならない。安全性を考慮すれば、追加パケットのＡＣＫ番号の最大値は、前パケットＰｂ１３のＡＣＫ番号＋２×ＭＳＳ以下であることが望ましい。したがって、同図の例では、追加パケットのＡＣ番号は、１６００１以上、かつ、１９０００以下であることが望ましいことになる。ここでいう、安全性とは、追加パケットのＡＣＫ番号が、検証系サーバ３０ｂにおけるシーケンス番号を超えないことに関する安全性をいう。前パケットＰｂ１３のＡＣＫ番号＋２×ＭＳＳ以下が安全であると考えるのは、ＴＣＰの実装における、クライアントとサーバとの間のパケットの通信規則に基づく。すなわち、ＴＣＰの実装において、クライアントは、最大で、サーバから２つのパケットを受信するごとに、１つのＡＣＫパケットを送信する。このことは、サーバのシーケンス番号の間隔（増加幅）の最小値は、２×ＭＳＳであることを意味する。したがって、クライアントのＡＣＫ番号の間隔の最大値を２×ＭＳＳとしておけば、ＡＣＫ番号の増加幅は、シーケンス番号の増加幅を超える可能性は低いと考えられるからである。但し、クアライアントが、ＡＣＫパケットを送信する最大の頻度については、ＴＣＰの実装に依存する可能性がある。したがって、追加パケットのＡＣＫ番号の最大値は、利用するＴＣＰの実装の特性を考慮して定められるのが望ましい。
【００６２】
また、一つの対象パケット間に追加される追加パケットは、一つでなくてもよい。
【００６３】
図１０は、追加パケットの個数の例を説明するための第一の図である。図１０中、図７と同一部分には同一符号を付し、その説明は適宜省略する。
【００６４】
図１０において、試験装置１０は、同一のＡＣＫ番号を有する二つの追加パケットＰｄ１及びＰｄ４を、ＡＣＫパケットＰｂ１３の送信直後に同時に又は連続して送信する。このように、同一のＡＣＫ番号を有する追加パケットが複数送信されてもよい。追加パケットが複数送信されることにより、検証系サーバ３０ｂの輻輳ウィンドウサイズの回復の度合いを高めることができる。換言すれば、検証系サーバ３０ｂからの下り方向のパケットの送信量を増加させることができる。その結果、検証系サーバ３０ｂにおいてＡＣＫパケットＰｂ１４が受信された際に、ＡＣＫ番号とシーケンス番号との逆転現象が発生する可能性を更に低減させることができる。
【００６５】
すなわち、図７のように追加パケットが一つの場合、可能性としては、パケット群Ｐｔ１１の最後のパケットのシーケンス番号は、「５００００」より小さいことも考えられる。この場合、検証系サーバ３０ｂにおいてＡＣＫパケットＰｂ１４が受信された際、ＡＣＫ番号とシーケンス番号との逆転現象が発生してしまう。一方、追加パケットが複数送信されれば、パケット群Ｐｔ１１に含まれるパケット数を増加させることができる。その結果、当該逆転現象が発生する可能性を低減させることができる。
【００６６】
なお、検証系サーバ３０ｂは、同じＡＣＫ番号を有するＡＣＫパケットを３個受信すると、パケットロスが発生したと判断する可能性がある。したがって、同一のＡＣＫ番号を有する追加パケットは、２個以下とされることが望ましい。
【００６７】
但し、同一のＡＣＫ番号を有する追加パケットが２個以下であるという制限が守られる限り、追加パケットは３個以上追加されてもよい。
【００６８】
図１１は、追加パケットの個数の例を説明するための第二の図である。図１１中、図１０と同一部分には同一符号を付し、その説明は適宜省略する。
【００６９】
図１１では、追加パケットＰｄ１、Ｐｄ５、及びＰｄ６の三つの追加パケットが追加されている。各追加パケットのＡＣＫ番号は、順番に、「１６００１」、「１６００２」、「１６００３」であり、相互に異なる。このように、同一のＡＣＫ番号が２個以下の範囲内であれば、３個以上の追加パケットが追加されてもよい。
【００７０】
また、追加パケットが複数追加される場合、追加パケット間のＡＣＫ番号の刻み幅（間隔）は、１でなくてもよい。
【００７１】
図１２は、追加パケット間のＡＣＫ番号の刻み幅の例を説明するための第一の図である。図１２中、図９と同一部分には同一符号を付し、その説明は適宜省略する。
【００７２】
図１２では、追加パケットＰｄ７と追加パケットＰｄ８とが追加されている。二つの追加パケットのＡＣＫ番号の刻み幅は、１ＭＳＳ（＝１５００）である。すなわち、追加パケットＰｄ７のＡＣＫ番号は、１７５００である。また、追加パケットＰｄ８のＡＣＫ番号は、１９０００である。
【００７３】
また、図１３は、追加パケット間のＡＣＫ番号の刻み幅の例を説明するための第二の図である。図１３中、図１２と同一部分には同一符号を付し、その説明は適宜省略する。
【００７４】
図１３では、追加パケットＰｄ９と追加パケットＰｄ１０とが追加されている。二つの追加パケットのＡＣＫ番号の刻み幅は、２ＭＳＳ（＝３０００）である。すなわち、追加パケットＰｄ９のＡＣＫ番号は、１９０００である。また、追加パケットＰｄ１０のＡＣＫ番号は、２２０００である。
【００７５】
このように、追加パケットのＡＣＫ番号の刻み幅は、１以外であってもよい。また、当該刻み幅は、ＭＳＳの整数倍でなくてもよい。例えば、当該刻み幅は、不規則であってもよい。すなわち、３つ以上の追加パケットが追加される場合、最初の追加パケットと２番目の追加パケットとの刻み幅と、２番目の追加パケットと３番目の追加パケットとの刻み幅は異なっていてもよい。
【００７６】
なお、一つの対象パケット間における追加パケットの個数の最小値は、１である。最大値は、対象パケット間のＡＣＫ番号の間隔ＤＡを、追加パケットのＡＣＫ番号の刻み幅で除した値に２を乗じることにより得られる値である。２を乗じるのは、同一のＡＣＫ番号ついて、二つの追加パケットが許容されるからである。
【００７７】
本実施の形態（図７等）において、ＤＡの値は、５１５００−１６０００＝３５５００である。追加パケットのＡＣＫ番号の刻み幅が、図１１のように１である場合、追加パケットの個数の最大値は、３５５０００÷１×２＝７１０００となる。また、追加パケットのＡＣＫ番号の刻み幅が、図１２のように１ＭＳＳ（＝１５００）である場合、追加パケットの個数の最大値は、３５５０００÷１５００＝２３．６…であるため、２３×２＝４６となる。更に、追加パケットのＡＣＫ番号の刻み幅が、図１３のように２ＭＳＳ（＝３０００）である場合、追加パケットの個数の最大値は、３５５０００÷３０００＝１１．８３…であるため、１１×２＝２２となる。
【００７８】
但し、追加パケットのＡＣＫ番号が、検証系サーバ３０ｂにおけるシーケンス番号を超えないことの安全性を考慮すれば、上記したように、追加パケットのＡＣＫ番号の最大値は、前パケットのＡＣＫ番号＋２×ＭＳＳ以下である。そうすると、上記ＤＡの値を、２×ＭＳＳ（＝３０００）として、上記と同様の演算をした結果が、安全な追加パケットの最大数であるといえる。
【００７９】
続いて、追加パケットを送信するタイミングについて説明する。追加パケットの送信タイミングとしては、前パケットと同時、前パケットの直後、前パケットから所定時間経過後、前パケットを送信してからＲＴＴ（Round-Trip Time）の整数倍の時間の経過後等が考えられる。
【００８０】
例えば、図１４は、追加パケットの送信タイミングの一例を説明するための図である。図１４中、図１３と同一部分には同一符号を付し、その説明は適宜省略する。
【００８１】
図１４では、前パケットＰｂ１３の送信後、ＲＴＴ経過後に追加パケットＰｄ１１が送信される例が示されている。
【００８２】
一方、追加パケットの送信タイミングとして許容される最終時刻（以下、「最終許容送信時刻」という。）は、次のように求められる。まず、後パケットＰｂ１４が検証系サーバ３０ｂに到達するまでに、検証系サーバ３０ｂが、後パケットＰｂ１４のＡＣＫ番号までの（未満の）シーケンス番号に係る全てのパケットを送信し終えるまでの所要時間を算出する。当後パケットＰｂ１４の送信時刻から当該所要時間を差し引いた時刻が、追加パケットの最終許容送信時刻である。
【００８３】
図１５は、追加パケットの最終許容送信時刻を説明するための図である。図１５中、図１４と同一部分には同一符号を付し、その説明は適宜省略する。
【００８４】
図１５において、検証系サーバ３０ｂによるパケットの送信時間間隔は、０．２ミリ秒であるとする。検証系サーバ３０ｂに後パケットＰｂ１４が到達するまでに、検証系サーバ３０ｂは、シーケンス番号が「４１５００」のパケットからシーケンス番号が「５００００」のパケットを送信する必要がある。そうでないと、後パケットＰｂ１４の受信時において、ＡＣＫ番号とシーケンス番号との逆転現象が発生してしまうからである。そうすると、追加パケットＰｄ１２の最終許容送信時刻は、Ｔｎ＋１＋Ｔｏｆｆｓｅｔ−（５００００−４１５００）×０．２によって求められる。なお、Ｔｎ＋１＋Ｔｏｆｆｓｅｔは、後パケットＰｂ１４の送信時刻である。
【００８５】
以下、試験装置１０の機能構成及び試験装置１０が実行する処理内容等について、更に詳しく説明する。
【００８６】
図１６は、本発明の実施の形態における試験装置の機能構成例を示す図である。同図において、試験装置１０は、パケット取得部１１、記録部１２、再現試験部１３、試験結果出力部１４、実動系通信履歴記憶部１５、試験用データ記憶部１６、及び検証系通信履歴記憶部１７等を有する。パケット取得部１１、記録部１２、再現試験部１３、及び試験結果出力部１４等は、試験装置１０にインストールされたプログラムがＣＰＵ１０４に実行させる処理によって実現される。実動系通信履歴記憶部１５、試験用データ記憶部１６、及び検証系通信履歴記憶部１７等は、メモリ装置１０３又は補助記憶装置１０２等を用いて実現可能である。
【００８７】
パケット取得部１１は、ネットワークｎ１におけるＴＣＰ／ＩＰ通信を監視し、実動系におけるパケットをキャプチャ（捕捉又は取得）する。パケット取得部１１は、また、試験装置１０より送信されるパケット、及び試験装置１０において受信されるパケットについても監視することにより、検証系におけるパケットをキャプチャする。
【００８８】
記録部１２は、パケット取得部１１によってキャプチャされたパケットのうち、実動系のパケットに関するデータを実動系通信履歴記憶部１５に記録し、検証系のパケットに関するデータを検証系通信履歴記憶部１７に記録する。その結果、実動系通信履歴記憶部１５には、実動系における通信履歴が記録される。また、検証系通信履歴記憶部１７には、検証系における通信履歴が記録される。記録部１２は、キャプチャされたパケットの送信元ＩＰアドレス又は宛先ＩＰアドレスに基づいて、当該パケットが実動系のパケットであるか検証系のパケットであるかを判定する。なお、本実施の形態において、実動系通信履歴記憶部１５は、第一の記憶部の一例である。また、検証系通信履歴記憶部１７は、第二の記憶部の一例である。
【００８９】
再現試験部１３は、実動系通信履歴記憶部１５に記録された通信履歴を用いて、実動系における上り方向のパケットの通信シーケンスを検証系において再現し、その結果実行される検証系サーバ３０ｂから返信される下り方向のパケットの通信シーケンスに基づいて検証系サーバ３０ｂの性能を評価する。再現試験部１３が実行する処理によって検証サーバ３０ｂ宛に送信されるパケット及び検証サーバ３０ｂより返信されるパケットに関するデータは、上記の通りパケット取得部１１によってキャプチャされ、記録部１２によって検証系通信履歴記憶部１７に記録される。
【００９０】
試験結果出力部１４は、再現試験部１３による試験結果（評価結果）を出力する。出力形態は所定のものに限定されない。例えば、試験結果を示すデータが補助記憶装置１０２に記録されてもよいし、所定の表示装置に表示されてもよい。
【００９１】
同図において、再現試験部１３は、試験用データ生成部１３１、変換部１３２、パケット削除部１３３、及び性能評価部１３５等を有する。
【００９２】
試験用データ生成部１３１は、実動系通信履歴記憶部１５に記憶されている通信履歴のうち、上り方向のパケットに関するデータを試験用データ記憶部１６に転記（コピー）する。試験用データ生成部１３１は、コピーに際し、上り方向のＡＣＫパケット間のＡＣＫ番号の間隔を計測する。試験用データ生成部１３１は、予め設定されている閾値以上の間隔が検出された場合、当該間隔に係る対象パケット間に追加パケットを追加する。すなわち、本実施の形態において、試験用データ生成部１３１は、追加部の一例である。
【００９３】
変換部１３２は、試験用データ記憶部１６に記録されているパケットに関して、検証系に適合させるための変換処理を行う。例えば、送信元ＩＰアドレス、宛先ＩＰアドレス、及びＡＣＫ番号等が変換される。
【００９４】
パケット削除部１３３は、検証系において試験を開始した結果、追加パケットが不要であると判定される場合に、当該追加パケットを破棄する。追加パケットが不要であると判定される場合とは、例えば、検証系サーバ３０ｂの輻輳ウィンドウサイズが、実動系サーバ３０ａの輻輳ウィンドウサイズよりも小さくなっていないと判定される場合である。
【００９５】
性能評価部１３５は、検証系通信履歴記憶部１７に記録された通信履歴に基づいて、検証系サーバ３０ｂの性能を評価する。例えば、性能評価部１３５は、検証系サーバ３０ｂの性能に関して、実動系サーバ３０ａの性能との比較結果を出力する。
【００９６】
以下、試験装置１０が実行する処理手順について説明する。
【００９７】
図１７は、試験装置によるパケットのキャプチャ処理の処理手順の一例を説明するためのフローチャートである。
【００９８】
ステップＳ１０１において、パケット取得部１１は、インタフェース装置１０５を介してパケットを取得する。続いて、パケット取得部１１は、取得されたパケットのＩＰヘッダを参照して、当該パケットの送信元ＩＰアドレス又は宛先ＩＰアドレスが実動系サーバ３０ａのＩＰアドレスと一致するか否かを判定する（Ｓ１０２）。すなわち、当該パケットが実動系における通信に係るパケットであるか否かが判定される。なお、試験装置１０の補助記憶装置１０２には、実動系サーバ３０ａ及び検証系サーバ３０ｂのそれぞれのＩＰアドレスが予め記録されている。
【００９９】
取得されたパケットの送信元ＩＰアドレス又は宛先ＩＰアドレスが実動系サーバ３０ａのＩＰアドレスと一致する場合（Ｓ１０２でＹｅｓ）、記録部１２は、現在時刻を試験装置１０のタイマー（時計）より取得する（Ｓ１０３）。続いて、記録部１２は、パケット内の各レイヤのヘッダ及びペイロードを解析する（Ｓ１０３）。続いて、記録部１２は、現在時刻及びパケットの解析結果を実動系通信履歴記憶部１５に記録する（Ｓ１０５）。
【０１００】
したがって、実動系に関するパケットが取得されるたびにステップＳ１０３〜Ｓ１０５が実行される。その結果、実動系通信履歴記憶部１５には、実動系における通信履歴が蓄積される。
【０１０１】
図１８は、実動系通信履歴記憶部の構成例を示す図である。同図において、実動系通信履歴記憶部１５は、取得されたパケットごとに、セッションＩＤ、時刻、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、宛先ポート番号、シーケンス番号、ＡＣＫ番号、ＳＹＮフラグ、ＡＣＫフラグ、ＰＳＨフラグ、ＦＩＮフラグ、ＨＴＴＰ情報、及びペイロード等を記憶する。
【０１０２】
セッションＩＤは、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、及び宛先ポート番の４つのパラメータに基づいて生成される、ＴＣＰレベルでのセッションの識別子（例えば、ハッシュ値）である。すなわち、記録部は、取得されたパケットの、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、及び宛先ポート番を入力情報として所定の演算を行ってセッションＩＤを生成する。なお、当該４つのパラメータの値が一致する場合、所定の演算によって得られるセッションＩＤは、同じである。所定の演算によって、送信元ＩＰアドレスと宛先ＩＰアドレスとの区別、及び送信元ポート番号と宛先ポート番号との区別はない。したがって、クライアント装置１０と実動系サーバ３０ａとの間でやりとりされるパケットに関して、使用されるポート番号が同じであれば、上り方向であるか下り方向であるかを問わず、セッションＩＤは一致する。
【０１０３】
時刻は、ステップＳ１０２において取得される時刻（通信時刻）である。同図では、実動系の最初のパケットが受信されてからの相対的な時刻が示されている。送信元ＩＰアドレスは、パケットの送信元のＩＰアドレスである。本実施の形態において、上り方向のパケットの送信元ＩＰアドレスは、クライアント装置２０のＩＰアドレスとなる。下り方向のパケットの送信元アドレスは、実動系サーバ３０ａのＩＰアドレスとなる。宛先ＩＰアドレスは、パケットの宛先のＩＰアドレスである。本実施の形態において、上り方向のパケットの宛先ＩＰアドレスは、実動系サーバ３０ａのＩＰアドレスとなる。下り方向のパケットの宛先アドレスは、クライアント装置２０のＩＰアドレスとなる。なお、送信元ＩＰアドレス及び宛先ＩＰアドレスは、パケット内のＩＰヘッダより取得される。
【０１０４】
送信元ポート番号は、パケットの送信元のポート番号である。宛先ポート番号は、パケットの宛先のポート番号である。シーケンス番号は、パケットのシーケンス番号である。ＡＣＫ番号は、パケットのＡＣＫ番号である。ＳＹＮフラグ、ＡＣＫフラグ、ＰＳＨフラグ、及びＦＩＮフラグは、ＴＣＰヘッダに含まれている各種フラグである。なお、ＡＣＫフラグが１であるパケットが、ＡＣＫパケットである。これら各種フラグと、送信元ポート番号及び宛先ポート番号とは、ＴＣＰヘッダより取得される。
【０１０５】
ＨＴＴＰ情報は、ＨＴＴＰ（HyperText Transfer Protocol）のメッセージ内容である。同図では、要求メソッド（ＧＥＴ等）又は応答コード（２００  ＯＫ等）が記録されている。ＨＴＴＰ情報は、ＨＴＴＰヘッダより取得される。なお、本実施の形態では、実動系サーバ３０ａは、ＨＴＴＰによってサービスを提供する。したがって、ＨＴＴＰ情報が記録される。ＰＯＰ（Post Office Protocol）３やＩＭＡＰ（Internet Message Access Protocol）等、実動系において他の通信プロトコルが利用される場合、当該通信プロトコルに応じた情報がＨＴＴＰ情報の代わりに記録されればよい。
【０１０６】
ペイロードは、パケットから全てのレイヤのヘッダを除いたデータである。なお、本実施の形態において、ペイロードは必ずしも記録されなくてもよい。
【０１０７】
また、イーサネット（登録商標）・フレームに関する情報が実動系通信履歴記憶部に記録されてもよい。例えば、送信元ＭＡＣアドレス及び宛先ＭＡＣアドレス等が記録されてもよい。
【０１０８】
一方、ステップＳ１０２において、取得されたパケットの送信元ＩＰアドレス又は宛先ＩＰアドレスが実動系サーバ３０ａのＩＰアドレスと一致しない場合（Ｓ１０２でＮｏ）、記録部１２は、取得されたパケットの送信元ＩＰアドレス又は宛先ＩＰアドレスが検証系サーバ３０ｂのＩＰアドレスと一致するか否かを判定する（Ｓ１０６）。すなわち、当該パケットが検証系における通信に係るパケットであるか否かが判定される。
【０１０９】
取得されたパケットの送信元ＩＰアドレス又は宛先ＩＰアドレスが検証系サーバ３０ｂのＩＰアドレスと一致する場合（Ｓ１０６でＹｅｓ）、記録部１２は、現在時刻を試験装置１０のタイマー（時計）より取得する（Ｓ１０７）。続いて、記録部１２は、パケット内の各レイヤのヘッダ及びペイロードを解析する（Ｓ１０８）。続いて、記録部１２は、現在時刻及びパケットの解析結果を検証系通信履歴記憶部１７に記録する（Ｓ１０９）。
【０１１０】
したがって、検証系に関するパケットが取得されるたびにステップＳ１０３〜Ｓ１０５が実行される。その結果、検証系通信履歴記憶部１７には、検証系における通信履歴が直積される。なお、検証系通信履歴記憶部１７の構成は、実動系通信履歴記憶部１５の構成と同様でよいため、その説明は省略する。
【０１１１】
続いて、試験用データの生成処理について説明する。図１９は、試験装置による試験データ生成処理の処理手順の一例を説明するためのフローチャートである。
【０１１２】
ステップＳ２０１において、試験用データ生成部１３１は、実動系通信履歴記憶部１５のレコードを記録順に走査し、最初の上り方向のパケットに係るレコードを取得する。当該パケットを「パケットＰ１」と呼ぶ。また、パケットＰ１のＡＣＫ番号はＡ１であり、時刻はＴ１であるとする。なお、各パケットが上り方向であるか否かは、送信先ＩＰアドレスが、実動系サーバ３０ａのＩＰアドレスであるか否かに基づいて判定されればよい。
【０１１３】
続いて、試験用データ生成部１３１は、取得されたレコードを試験用データ記憶部１６に記録する（Ｓ２０２）。すなわち、パケットＰ１に係るレコードが、試験用データ記憶部１６にコピーされる。
【０１１４】
続いて、試験用データ生成部１３１は、実動系通信履歴記憶部１５において、パケットＰ１に係るレコードより後のレコードを走査し、次の上り方向のパケットのレコードを取得する（Ｓ２０３）。当該次の上り方向のパケットを、「パケットＰ２」と呼ぶ。
【０１１５】
パケットＰ２のレコードが取得できた場合（Ｓ２０４でＹｅｓ）、試験用データ生成部１３１は、パケットＰ１のＡＣＫ番号とパケットＰ２のＡＣＫ番号との間隔（差分）ＤＡを算出する（Ｓ２０５）。続いて、試験用データ生成部１３１は、間隔ＤＡが、ＡＣＫ番号の間隔に対する閾値以上であるか否かを判定する（Ｓ２０６）。
【０１１６】
当該閾値は、検証系サーバ３０ｂに対する負荷よりも、検証系サーバ３０ｂがパケットを送信しなくなるのを防ぐことを重視して決定されればよい。追加パケットが検証系サーバ３０ｂに与える処理負荷は、無視できる程度に小さいからである。例えば、ＴＣＰ／ＩＰプロトコルでは、通信開始直後において、クライアントは、サーバから２パケット受信するごとにＡＣＫパケットを１つ返信する。このような振る舞いに鑑みれば、クライアントは、２パケットの受信に対して１パケット返信すれば、サーバの輻輳ウィンドウサイズは、枯渇しないと考えられる。そこで、クライアントが４パケット受信してもＡＣＫパケットを返信していない場合、輻輳ウィンドウサイズの減少が始まると考え、このような状態が発生しないように閾値を定めるとよい。そうすると、４ＭＳＳが安全な閾値であると考えられる。但し、これは、理論的な値であって、４ＭＳＳよりも大きな値を閾値とした場合に、シーケンス番号とＡＣＫ番号との逆転現象が必ず発生するというわけではない。すなわち、実際上、４ＭＳＳよりも大きな値が閾値とされてもよい。
【０１１７】
間隔ＤＡが閾値以上である場合（Ｓ２０６でＹｅｓ）、試験用データ生成部１３１は、追加パケットの生成処理を実行する（Ｓ２０７）。追加パケットの生成処理の詳細については後述する。なお、追加パケットの生成処理が実行される場合、パケットＰ１は、前パケットに相当し、パケットＰ２は、後パケットに相当する。
【０１１８】
ステップＳ２０６でＮｏの場合、又はステップＳ２０７に続いて、試験用データ生成部１３１は、パケットＰ２に係るレコードを試験用データ記憶部１６に記録する（Ｓ２０８）。続いて、試験用データ生成部１３１は、パケットＰ２をパケットＰ１の位置付けとして（Ｓ２０９）、ステップＳ２０３以降を繰り返す。
【０１１９】
ステップＳ２０３において、上り方向のパケットが取得できなかった場合（Ｓ２０４でＮｏ）、すなわち、全ての上り方向のパケットに関して処理が終了した場合、図１９の処理は終了する。
【０１２０】
なお、ステップＳ２０５において、試験用データ生成部１３１は、パケットＰ１の時刻とパケットＰ２の時刻との時間間隔（差分）ＤＴを算出してもよい。この場合、ステップＳ２０６にいて、試験用データ生成部１３１は、時間間隔ＤＴが、時間間隔に対する閾値以上であるか否かを判定する。時間間隔ＤＴが当該閾値以上である場合（Ｓ２０６でＹｅｓ）、試験用データ生成部１３１は、追加パケットの生成処理を実行する（Ｓ２０７）。
【０１２１】
なお、追加パケットの追加の要否を判定するための閾値は、ＡＣＫ番号の間隔又は時刻の間隔の平均、分散、又は時系列解析等によって求められてもよい。
【０１２２】
続いて、ステップＳ２０７の詳細について説明する。図２０は、追加パケットの生成処理の処理手順の一例を説明するためのフローチャートである。
【０１２３】
ステップＳ３０１において、試験用データ生成部１３１は、変数ｉを１に初期化する。変数ｉは、追加パケットの個数を記憶する変数である。続いて、試験用データ生成部１３１は、追加パケットＰ３のＡＣＫ番号を計算する（Ｓ３０２）。試験用データ生成部１３１は、例えば、パケットＰ１のＡＣＫ番号＋α×ｉの計算式に基づいて追加パケットのＡＣＫ番号を計算する。ここで、αの値は、例えば、追加パケット間のＡＣＫ番号の刻み幅である。したがって、αの値は、図１１、図１２、又は図１３において説明したように「１」、「１ＭＳＳ」、又は「２ＭＳＳ」でもよいし、他の値であってもよい。また、２以上の追加パケットが生成される場合、図１０において説明したように、同じＡＣＫ番号が２回連続で使用されてもよい。
【０１２４】
続いて、試験用データ生成部１３１は、追加パケットの時刻を計算する（Ｓ３０３）。試験用データ生成部１３１は、例えば、パケットＰ１の時刻＋β×ｉの計算式に基づいて追加パケットの時刻を計算する。βは、追加パケット間の時間間隔である。βの値は、図１４において説明したように、ＲＴＴであってもよいし、他の値でもよい。
【０１２５】
続いて、試験用データ生成部１３１は、追加パケットのＡＣＫ番号がパケットＰ２のＡＣＫ番号未満であり、かつ、追加パケットの時刻がパケットＰ２の時刻より前であるという条件が満たされているか否かを判定する（Ｓ３０４）。安全性を考慮すると、ステップＳ３０４における条件は、追加パケットのＡＣＫ番号がパケットＰ１のＡＣＫ番号＋２ＭＳＳ以下であり、かつ、追加パケットの時刻が、図１４において説明した、最終許容送信時刻以前であることとされればよい。但し、当該条件（特にＡＣＫ番号に関する条件）は、ＴＣＰの実装に応じて異なりうる。
【０１２６】
ステップＳ３０４における条件が満たされている場合（Ｓ３０４でＹｅｓ）、試験用データ生成部１３１は、追加パケット用の空のレコードを試験用データ記憶部１６に生成する。当該レコードは、試験用データ記憶部１６に既に記録されている最後のレコードの次に生成される。したがって、一つの対象パケット間に関してステップＳ３０５が初めてに実行されるとき、当該レコードは、図１９のステップＳ２０２において記録されたパケットＰ１に係るレコードの次に生成される。
【０１２７】
続いて、試験用データ生成部１３１は、パケットＰ１に係るレコードの内容を、ステップＳ３０５において生成された追加パケットのレコードにコピーする（Ｓ３０６）。続いて、試験用データ生成部１３１は、追加パケットのレコードのＡＣＫ番号及び時刻を、ステップＳ３０２又はステップＳ３０３において算出されたＡＣＫ番号又は時刻によって更新する（Ｓ３０７）。これにより、実質的に追加パケットが生成されたことになる。続いて、試験用データ生成部１３１は、変数ｉに１を加算し、ステップＳ３０２以降を繰り返す。
【０１２８】
その後、ステップＳ３０４の条件が満たされなくなった場合（Ｓ３０４でＮｏ）、図２０の処理は終了する。
【０１２９】
なお、追加パケットの生成処理の後に、図１９のステップＳ２０８において、パケットＰ２のレコードが試験用データ記憶部１６に記録される。したがって、前パケットであるパケットＰ１に係るレコードと、後パケットであるパケットＰ２に係るレコードとの間に、追加パケットに関するレコードが試験用データ記憶部１６に記録される。
【０１３０】
また、図２０では、追加パケットを複数追加可能な処理手順を説明した。追加パケットを１つしか追加しない場合、ステップＳ３０２以降の繰り返しは実行しなければよい。
【０１３１】
図１９及び図２０において説明した処理手順の実行により、試験用データ記憶部１６には、例えば、図２１に示されるようなレコードが記録される。
【０１３２】
図２１は、試験用データ記憶部の構成例を示す図である。
【０１３３】
同図に示されるように、試験用データ記憶部１６のレコードは、基本的に、実動系通信履歴記憶部１５より上り方向のパケットに係るレコードが抽出されたものである。但し、試験用データ記憶部１６には、必要に応じて、追加パケットに係るレコードが追加されている。同図では、レコードｒ３．４とレコードｒ５．４との間に、追加パケットに係るレコードｒ３．８及びレコードｒ４．２が追加されている。これは、レコードｒ３．４のＡＣＫ番号と、レコードｒ５．４のＡＣＫ番号との間隔（差分）が、閾値以上であると判定されたことに基づく。なお、同図の説明において、レコードに対する符号は、「ｒ＜時刻＞」という命名規則に従っている。
【０１３４】
また、試験用データ記憶部１６は、追加パケットフラグという項目（列）を有する。追加パケットフラグは、各レコードが追加パケットに係るレコードであるか否かを識別するためのフラグである。本実施の形態では、追加パケットに係るレコードの追加パケットフラグには、「１」が記録される。したがって、レコードｒ３．８及びレコードｒ４．２の追加パケットフラグには「１」が記録されている。
【０１３５】
なお、一つの対象パケット間に対する追加パケットの個数を一つとする場合は、例えば、レコードｒ４．２は、試験用データ記憶部１６に記録されない。
【０１３６】
続いて、性能評価試験の実行処理について説明する。図２２は、試験装置による性能評価試験の実行処理の処理手順の一例を説明するためのフローチャートである。
【０１３７】
ステップＳ４０１において、変換部１３２は、試験用データ記憶部１６に記憶されているレコードを一つ取得する。当該ステップでは、試験用データ記憶部１６の記憶順において上位から順にレコードが取得される。取得されたレコードを、以下「対象レコード」という。
【０１３８】
続いて、変換部１３２は、試験開始時刻から対象レコードの時刻までの時間（以下、「オフセット時間」という。）が到来するまで待機する（Ｓ４０２）。試験開始時刻とは、図２２の処理の開始時刻である。
【０１３９】
対象レコードのオフセット時間が到来すると、変換部１３２は、対象レコードに記録されている情報を検証系に適合するように変換して、検証系用のパケットを生成する（Ｓ４０３）。生成されたパケットを、「試験用パケット」という。具体的には、変換部１３２は、送信元ＩＰアドレスを、試験装置１０のＩＰアドレスに変換する。また、変換部１３２は、対象レコードの宛先ＩＰアドレスを、検証系サーバ３０ｂのＩＰアドレスに変換する。したがって、試験用パケットのＩＰヘッダのチェックサム及びＴＣＰヘッダのチェックサム等は、実動系のパケットと異なる値となる。
【０１４０】
また、ＡＣＫ番号についても変換される。すなわち、ＴＣＰ／ＩＰのプロトコルにおいて、シーケンス番号の初期値は、３ウェイハンドシェイクによってセッションが確立される際に乱数に基づいて決定される。その後のシーケンス番号及びＡＣＫ番号は、シーケンス番号の初期値に対して、それまでに送受信されたデータ長が加算された値となる。したがって、検証系における各パケットのＡＣＫ番号は、実動系において対応するパケットのＡＣＫ番号と一致するとは限らない。よって、ＡＣＫ番号の変換も必要とされるのである。
【０１４１】
検証系において、実動系の上り方向の通信シーケンスと同一の通信シーケンスを再現する試験では、検証系における上り方向のパケットについて将来のＡＣＫ番号の値を推測することが可能である。
【０１４２】
図２３は、ＡＣＫ番号の変換について説明するための図である。同図において、上側の表は変換前の試験用データ記憶部１６の一部を示す。下側は変換後の試験用データ記憶部１６の一部を示す。なお、変換前の試験用データ記憶部１６の記憶内容は、実動系における記録結果である。
【０１４３】
例えば、実動系で通信開始後２．１秒後にＡＣＫ番号が５００１のパケットが送られ、通信開始後２．４秒後にＡＣＫ番号が７００１のパケットが送られたとする。ここで、検証系で通信を開始した際、通信開始後２．１秒後に送信されたパケットのＡＣＫ番号が１１００１であった場合、実動系とのＡＣＫ番号の変化量は、１１００１−５００１＝６０００である。したがって、検証系で通信開始後２．４秒後に送信されたパケットのＡＣＫ番号は、変換前の値である７００１に６０００を加算することにより、１３００１として算出することができる。
【０１４４】
また、対象レコードの送信元ＩＰアドレス及び宛先ＩＰアドレス等が変換されたことにより、変換部１３２は、変換後の対象レコードの送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、及び宛先ポート番号に基づいて、セッションＩＤを算出する。変換部１３２は、算出されたセッションＩＤによって、対象レコードのセッションＩＤを更新する。変換部は、更新前のセッションＩＤと更新後のセッションＩＤとの対応情報を、補助記憶装置１０２に記録しておく。但し、セッションＩＤは、通信に利用されるデータではなく、性能評価処理において利用されるデータである。性能評価処理では、各セッションの異同が識別できればよい。したがって、セッションＩＤの更新は、必ずしも実行されなくてもよい。
【０１４５】
また、送信元ＭＡＣアドレス及び宛先ＭＡＣアドレスが記録対象とされている場合は、送信元ＭＡＣアドレス及び宛先ＭＡＣアドレスについても変換が行われる。
【０１４６】
なお、ＨＴＴＰ情報やペイロード等については、変換が必要な情報と変換が不要な情報とを示す情報が予め補助記憶装置１０２に記録されている。変換部１３２は、変換が必要な情報に関して変換を実行する。
【０１４７】
続いて、パケット送信部１３４は、試験用パケットが追加パケットであるか否かを判定する（Ｓ４０４）。当該判定は、試験用パケットに係るレコードの追加パケットフラグに「１」が記録されているか否かに基づいて行われる。
【０１４８】
試験用パケットが追加パケットでない場合（Ｓ４０４でＮｏ）、パケット送信部１３４は、インタフェース装置１０５を用いて、試験用パケットの送信を実行する（Ｓ４０５）。本実施の形態において、試験用パケットの宛先ＩＰアドレスは、検証用サーバ３０ｂのＩＰアドレスとされている。したがって、試験用パケットは、検証用サーバ３０ｂに転送される。なお、試験用パケットの送信に応じ、パケット取得部１１によって、図１７のステップＳ１０７〜Ｓ１０９が実行される。その結果、試験用パケットに係るレコードが検証系通信履歴記憶部１７に記録される。また、試験用パケットに応じて検証系サーバ３０ｂより返信されるパケットに関しても、パケット取得部１１によって、図１７のステップＳ１０７〜Ｓ１０９が実行される。
【０１４９】
一方、試験用パケットが追加パケットである場合（Ｓ４０４でＹｅｓ）、パケット削除部１３３は、検証系通信履歴記憶部１７より、試験用パケットと同一のセッションＩＤに係る最後の下り方向のレコードを取得する（Ｓ４０６）。当該レコードは、検証系サーバ３０ｂより最後に送信されたパケット（最後の下り方向のパケット）に係るレコードである。
【０１５０】
続いて、パケット削除部１３３は、ステップＳ４０６において取得されたレコードのシーケンス番号は、試験用パケット（追加パケット）のＡＣＫ番号より大きいか否かを判定する（Ｓ４０７）。すなわち、最後の下り方向のパケットのシーケンス番号が、追加パケットのＡＣＫ番号より大きいか否かが判定される。最後の下り方向のパケットのシーケンス番号が、追加パケットのＡＣＫ番号より大きい場合（Ｓ４０７でＹｅｓ）、パケット削除部１３３は、追加パケットを破棄する（Ｓ４０８）。したがって、この場合、追加パケットの送信は行われない。検証系サーバ３０ｂのシーケンス番号の方が大きい場合、追加パケットを送信しなくても、その後に送信される上り方向の再現パケットのＡＣＫ番号が、検証系サーバ３０ｂのシーケンス番号を超えてしまう可能性は低いからである。追加パケットが破棄される典型的なケースとしては、検証系サーバ３０ｂの振る舞いが、実動系サーバ３０ａの振る舞いと一致する場合が挙げられる。
【０１５１】
ステップＳ４０８が実行されることにより、不要な追加パケットの送信を抑制することができる。なお、その後に送信される上り方向の再現パケットとは、実動系においてキャプチャされた上り方向のパケットに対応するパケットである。
【０１５２】
一方、最後の下り方向のパケットのシーケンス番号が、追加パケットのＡＣＫ番号以下である場合（Ｓ４０７でＹｅｓ）、パケット送信部１３４は、追加パケットを送信する（Ｓ４０５）。
【０１５３】
ステップＳ４０５又はＳ４０８に続いて、変換部１３２は、試験用データ記憶部１６における全てのレコードに関して図２２の処理を実行したか否かを判定する（Ｓ４０９）。未処理のレコードが残っている場合（Ｓ４０９でＮｏ）、残りのレコードに関して記録順にステップＳ４０１以降の処理が実行される。全てのレコードに関して処理が完了した場合（Ｓ４０９でＹｅｓ）、図２２の処理は終了する。
【０１５４】
図２２の処理が終了すると、性能評価部１３５によって、検証系サーバ３０ｂに関する性能評価が実行される。
【０１５５】
図２４は、第一の性能評価方法を説明するための図である。第一の性能評価方法では、実動系におけるＲＴＴ（Round-Trip Time）と、検証系におけるＲＴＴとの差が既知であることが前提とされる。例えば、試験実施者は、予め、ｐｉｎｇコマンド等を利用して、実動系におけるＲＴＴと、検証系におけるＲＴＴとを計測し、その差（ΔＲＴＴ）を求めておく。同図では、ΔＲＴＴ＝１．２秒であるとする。なお、実動系のＲＴＴと検証系のＲＴＴとの間に相違が有るのは、双方の通信距離が必ずしも同じであるとは限らないからである。
【０１５６】
同図の実動系において、上り方向のパケットＰａ１の時刻（キャプチャされた時刻）は、通信開始から２．１秒後であるとする。また、パケットＰａ１の応答であるパケットＰｃ１の時刻（キャプチャされた時刻）は、通信開始から２．３秒後であるとする。この場合、ＲＴＴ１の値は、２．３−２．１＝０．２秒となる。
【０１５７】
一方、検証系において、パケットＰａ１を再現した上り方向のパケットＰｂ１の時刻は、試験開始から２．１秒後であるとする。また、パケットＰａ１の応答であるパケットＰｔ１の時刻は、試験開始から３．５秒後であるとする。この場合、ＲＴＴ２の値は、３．５−２．１＝１．４秒となる。
【０１５８】
試験装置１０は、ＲＴＴ１と、ＲＴＴ２−ΔＲＴＴとを比較して、検証系サーバ３０ｂの性能を評価する。ＲＴＴ２よりΔＲＴＴが差し引かれることにより、実動系と検証系との通信距離の相違を吸収することができる。図２４の場合、０．２と、１．４−１．２＝０．２とが比較される。両者は等しいため、検証系サーバ３０ｂの性能は、実動系サーバ３０ａの性能と同等であると判定される。なお、ＲＴＴ１＜ＲＴＴ２−ΔＲＴＴの場合、検証系サーバ３０ｂの性能は、実動系サーバ３０ａの性能より低いと判定される。また、ＲＴＴ１＞ＲＴＴ２−ΔＲＴＴの場合、検証系サーバ３０ｂの性能は、実動系サーバ３０ａの性能より高いと判定される。
【０１５９】
図２４に示される第一の性能評価方法を実現するために試験装置１０が実行する処理手順について説明する。
【０１６０】
図２５は、検証系サーバに関する第一の性能評価処理の処理手順の一例を説明するためのフローチャートである。同図の処理は、図２２の処理の終了をきっかけとして実行されてもよいし、図２２の処理の実行後の任意のタイミングで実行されてもよい。
【０１６１】
ステップＳ５０１において、性能評価部１３５は、例えば、補助記憶装置１０２より、実動系のＲＴＴと検証系のＲＴＴとの差であるΔＲＴＴを取得する。続いて、性能評価部１３５は、実動系通信履歴記憶部１５に記録されているレコード（実動系の通信履歴）に基づいて、実動系において、ＨＴＴＰリクエストに対するＨＴＴＰレスポンスが応答されるまでのＲＴＴ（ＲＴＴ１）を算出する（Ｓ５０２）。例えば、図１８に示される実動系通信履歴記憶部１５によれば、ＨＴＴＰ情報に「ＧＥＴ」が記録されているレコードが、ＨＴＴＰリクエストに係るパケットのレコードに相当する。また、当該レコードと同一のセッションＩＤを有し、ＨＴＴＰ情報に「２００  ＯＫ」が記録されているレコードが、ＨＴＴＰレスポンスに係るパケットのレコードに相当する。ＨＴＴＰレスポンスに係るレコードの時刻からＨＴＴＰリクエストに係る時刻を差し引くことにより、ＲＴＴ１が算出される。
【０１６２】
続いて、性能評価部１３５は、検証系通信履歴記憶部１７に記録されているレコード（検証系の通信履歴）に基づいて、検証系において、ＨＴＴＰリクエストに対するＨＴＴＰレスポンスが応答されるまでのＲＴＴ（ＲＴＴ２）を算出する（Ｓ５０３）。なお、ＲＴＴ２の算出に用いられるＨＴＴＰリクエスト及びＨＴＴＰレスポンスは、ＲＴＴ１の算出に用いられたＨＴＴＰリクエスト及びＨＴＴＰレスポンスを再現したものであることが望ましい。例えば、性能評価部１３５は、ＲＴＴ１の算出に用いられたＨＴＴＰリクエストに係るレコードと同一の又は対応するセッションＩＤを有し、同じ時刻を有するレコードを検証系通信履歴記憶部１７より取得する。性能評価部１３５は、取得されたレコードと同一のセッションＩＤを有し、ＨＴＴＰ情報にＨＴＴＰレスポンスを示す情報（例えば、応答コード）が記録されているレコードを取得する。性能評価部１３５は、取得された二つのレコードの時刻の差分を算出する。当該差分の値が、ＲＴＴ２である。
【０１６３】
続いて、性能評価部１３５は、ＲＴＴ１とＲＴＴ２−ΔＲＴＴとを比較する（Ｓ５０４）。ＲＴＴ１の方が、ＲＴＴ２−ΔＲＴＴより大きい場合、性能評価部１３５は、検証系サーバ３０ｂは、実動系サーバ３０ａより高性能であると判定する（Ｓ５０５）。ＲＴＴ１と、ＲＴＴ２−ΔＲＴＴとが等しい場合、性能評価部１３５は、検証系サーバ３０ｂは、実動系サーバ３０ａと同性能であると判定する（Ｓ５０６）。ＲＴＴ１の方が、ＲＴＴ２−ΔＲＴＴより小さい場合、性能評価部１３５は、検証系サーバ３０ｂは、実動系サーバ３０ａより低性能であると判定する（Ｓ５０７）。なお、試験結果出力部１４は、判定結果を示す情報を、例えば、補助記憶装置１０２に保存してもよいし、表示装置等に表示させてもよい。
【０１６４】
続いて、第二の性能評価方法について説明する。図２６は、第二の性能評価方法を説明するための図である。第二の性能評価方法では、実動系における下り方向のパケットの時間間隔と、検証系における下り方向のパケットの時間間隔との比較によって、検証系サーバ３０ｂの性能が評価される。上り方向のパケットに関して実動系と検証系との送信間隔が同じである場合、実動系サーバ３０ａと検証系サーバ３０ｂの性能が同じあれば下り方向のパケットの時間間隔は、ΔＲＴＴの影響を受けずに同じになることが期待される。したがって、下り方向の時間間隔を比較することにより、検証系サーバ３０ｂの性能を評価することができる。
【０１６５】
例えば、同図の実動系において、パケットＰｃ１の時刻（キャプチャされた時刻）は、通信開始から２．１秒後であり、パケットＰｃ２の時刻（キャプチャされた時刻）は、通信開始から２．４秒後であるとする。そうすると、実動系における下り方向のパケットの時間間隔ＤＴ１は、２．４−２．１＝０．３秒となる。
【０１６６】
一方、同図の検証系において、パケットＰｔ１の時刻は、試験開始から３．５秒後であり、パケットＰｔ２の時刻は、試験開始から３．８秒後であるとする。そうすると、検証系における下り方向のパケットの時間間隔ＤＴ２は、３．８−３．５＝０．３秒となる。
【０１６７】
この場合、実動系における下り方向のパケットの時間間隔ＤＴ１と、検証系における下り方向のパケットの時間間隔ＤＴ２は等しい。したがって、検証系サーバ３０ｂの性能は、実動系サーバ３０ａの性能と同等であると判定される。なお、ＤＴ１＜ＤＴ２の場合、検証系サーバ３０ｂの性能は、実動系サーバ３０ａの性能より低いと判定される。また、ＤＴ１＞ＤＴ２の場合、検証系サーバ３０ｂの性能は、実動系サーバ３０ａの性能より高いと判定される。
【０１６８】
図２６に示される第二の性能評価方法を実現するために試験装置１０が実行する処理手順について説明する。
【０１６９】
図２７は、検証系サーバに関する第二の性能評価処理の処理手順の一例を説明するためのフローチャートである。同図の処理は、図２２の処理の終了をきっかけとして実行されてもよいし、図２２の処理の実行後の任意のタイミングで実行されてもよい。
【０１７０】
ステップＳ６０１において、性能評価部１３５は、実動系通信履歴記憶部１５に記録されているレコード（実動系の通信履歴）に基づいて、実動系において、例えば、同一のセッションＩＤに係るＨＴＴＰレスポンスの時間間隔ＤＴ１を算出する（Ｓ６０１）。例えば、セッションＩＤが共通し、ＨＴＴＰ情報にＨＴＴＰレスポンスを示す情報（例えば、応答コード）が記録されている二つのレコードの時刻の差分が算出される。
【０１７１】
続いて、性能評価部１３５は、検証系通信履歴記憶部１７に記録されているレコード（検証系の通信履歴）に基づいて、検証系において、例えば、同一のセッションＩＤに係るＨＴＴＰレスポンスの時間間隔ＤＴ２を算出する（Ｓ６０２）。なお、ＤＴ２の算出に用いられる、ＨＴＴＰＨＴＴＰレスポンスは、ＤＴ１の算出に用いられたＨＴＴＰレスポンスに対応したものであることが望ましい。例えば、性能評価部１３５は、ＤＴ１の算出に用いられた二つのＨＴＴＰレスポンスに対応する二つのＨＴＴＰリクエストに係るそれぞれのレコードと同一の又は対応するセッションＩＤを有し、同じ時刻を有する二つのレコードを検証系通信履歴記憶部１７より取得する。性能評価部１３５は、取得された二つのレコードごとに、当該レコードと同一のセッションＩＤを有し、ＨＴＴＰ情報にＨＴＴＰレスポンスを示す情報（例えば、応答コード）が記録されているレコードを取得する。性能評価部１３５は、取得された二つのレコードの時刻の差分を算出する。当該差分の値が、ＤＴ２である。
【０１７２】
続いて、性能評価部１３５は、ＤＴ１とＤＴ２とを比較する（Ｓ６０３）。ＤＴ１の方が、ＤＴ２より大きい場合、性能評価部１３５は、検証系サーバ３０ｂは、実動系サーバ３０ａより高性能であると判定する（Ｓ６０４）。ＤＴ１とＤＴ２とが等しい場合、性能評価部１３５は、検証系サーバ３０ｂは、実動系サーバ３０ａと同性能であると判定する（Ｓ６０５）。ＤＴ１の方が、ＤＴ２より小さい場合、性能評価部１３５は、検証系サーバ３０ｂは、実動系サーバ３０ａより低性能であると判定する（Ｓ６０６）。
【０１７３】
なお、試験実施者は、性能評価処理の判定結果を受けて、実動系サーバ３０ａから検証系サーバ３０ｂへ移行の当否を判断する。例えば、検証系サーバ３０ｂの性能が、実動系サーバの性能と同等以上であるという判定結果が得られた場合、試験実施者は、検証系サーバ３０ｂへの移行は妥当であると判断する。一方、検証系サーバ３０ｂの性能が、実動系サーバの性能より低いという判定結果が得られた場合、試験実施者は、検証系サーバ３０ｂへの移行は妥当でないと判断する。
【０１７４】
上述したように、本実施の形態によれば、検証系サーバ３０ｂへのパケットの送信間隔を実動系サーバ３０ａへのパケットの送信間隔と等しくすることができる。その結果、検証系サーバ３０ｂの処理負荷が実動系サーバ３０ａの処理負荷と同等である状態によって、検証系サーバ３０ｂの性能を評価することができる。
【０１７５】
また、追加パケットが追加されることにより、シーケンス番号とＡＣＫ番号との逆転現象の発生の可能性を低減させることができる。その結果、検証系サーバ３０ｂがパケットの送信を停止してしまい、性能評価試験を中断せざるを得ないような事態の発生を回避することができる。
【０１７６】
上記より、検証系サーバ３０ｂが実動系に対して遠隔地に配置されている場合であっても、検証系サーバ３０ｂの性能評価試験を高い精度で、かつ、効率的に実行することができる。
【０１７７】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０１７８】
以上の説明に関し、更に以下の項を開示する。
（付記１）
第一の記憶部が記憶する、パケットの通信時刻及び応答確認番号を含む通信履歴において通信時刻の間隔又は応答確認番号の間隔が閾値以上である連続する二つのパケットの間の、通信時刻及び応答確認番号を有する追加パケットを生成し、
前記第一の記憶部に記憶されている各パケット及び前記追加パケットを、それぞれの通信時刻に基づく時間間隔で所定の宛先に送信する処理をコンピュータに実行させる試験プログラム。
（付記２）
前記送信する処理において送信される送信パケットの送信履歴と、該パケットに応じて受信される受信パケットの受信履歴とを第二の記憶部に記録する処理を前記コンピュータに実行させ、
前記送信する処理は、前記追加パケットの応答確認番号が、当該追加パケットを送信するまでに前記第二の記憶部に記録されている前記受信パケットのシーケンス番号よりも小さい場合は、当該追加パケットを送信しない付記１記載の試験プログラム。
（付記３）
前記追加パケットを生成する処理は、前記通信履歴において通信時刻の間隔又は応答確認番号の間隔が閾値以上である連続する二つの送信パケットの間に、複数の前記追加パケットを生成する付記１又は２記載の試験プログラム。
（付記４）
パケットの通信時刻及び応答確認番号を含む通信履歴を記憶した第一の記憶部と、
前記通信履歴において通信時刻の間隔又は応答確認番号の間隔が閾値以上である連続する二つのパケットの間の、通信時刻及び応答確認番号を有する追加パケットを生成する追加部と、
前記第一の記憶部に記憶されている各パケット及び前記追加パケットを、それぞれの通信時刻に基づく時間間隔で所定の宛先に送信する送信部とを有する試験装置。
（付記５）
前記送信部によって送信される送信パケットの送信履歴と、該パケットに応じて受信される受信パケットの受信履歴とを第二の記憶部に記録する記録部を有し、
前記送信部は、前記追加パケットの応答確認番号が、当該追加パケットを送信するまでに前記第二の記憶部に記録されている前記受信パケットのシーケンス番号よりも小さい場合は、当該追加パケットを送信しない付記４記載の試験装置。
（付記６）
前記追加部は、前記通信履歴において通信時刻の間隔又は応答確認番号の間隔が閾値以上である連続する二つの送信パケットの間に、複数の前記追加パケットを生成する付記４又は５記載の試験装置。
（付記７）
第一の記憶部が記憶する、パケットの通信時刻及び応答確認番号を含む通信履歴において通信時刻の間隔又は応答確認番号の間隔が閾値以上である連続する二つのパケットの間の、通信時刻及び応答確認番号を有する追加パケットを生成し、
前記第一の記憶部に記憶されている各パケット及び前記追加パケットを、それぞれの通信時刻に基づく時間間隔で所定の宛先に送信する処理をコンピュータが実行する試験方法。
（付記８）
前記送信する処理において送信される送信パケットの送信履歴と、該パケットに応じて受信される受信パケットの受信履歴とを第二の記憶部に記録する処理を前記コンピュータが実行し、
前記送信する処理は、前記追加パケットの応答確認番号が、当該追加パケットを送信するまでに前記第二の記憶部に記録されている前記受信パケットのシーケンス番号よりも小さい場合は、当該追加パケットを送信しない付記７記載の試験方法。
（付記９）
前記追加パケットを生成する処理は、前記通信履歴において通信時刻の間隔又は応答確認番号の間隔が閾値以上である連続する二つの送信パケットの間に、複数の前記追加パケットを生成する付記７又は８記載の試験方法。
【符号の説明】
【０１７９】
１０          試験装置
１１          パケット取得部
１２          記録部
１３          再現試験部
１４          試験結果出力部
１５          実動系通信履歴記憶部
１６          試験用データ記憶部
１７          検証系通信履歴記憶部
２０          クライアント装置
３０ａ        実動系サーバ
３０ｂ        検証系サーバ
４０          ＴＡＰ
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１３１        試験用データ生成部
１３２        変換部
１３３        パケット削除部
１３４        パケット送信部
１３５        性能評価部
Ｂ            バス
【図１】
0005516381.tif 000002
【図２】
0005516381.tif 000003
【図３】
0005516381.tif 000004
【図４】
0005516381.tif 000005
【図５】
0005516381.tif 000006
【図６】
0005516381.tif 000007
【図７】
0005516381.tif 000008
【図８】
0005516381.tif 000009
【図９】
0005516381.tif 000010
【図１０】
0005516381.tif 000011
【図１１】
0005516381.tif 000012
【図１２】
0005516381.tif 000013
【図１３】
0005516381.tif 000014
【図１４】
0005516381.tif 000015
【図１５】
0005516381.tif 000016
【図１６】
0005516381.tif 000017
【図１７】
0005516381.tif 000018
【図１８】
0005516381.tif 000019
【図１９】
0005516381.tif 000020
【図２０】
0005516381.tif 000021
【図２１】
0005516381.tif 000022
【図２２】
0005516381.tif 000023
【図２３】
0005516381.tif 000024
【図２４】
0005516381.tif 000025
【図２５】
0005516381.tif 000026
【図２６】
0005516381.tif 000027
【図２７】
0005516381.tif 000028