(57)【特許請求の範囲】
【請求項１】
送信元装置から宛先装置へ送られたデータパケットに含まれるシーケンス番号、前記データパケットのサイズおよび前記データパケットを受信した時刻を対応付けて記憶する第１記憶部と、
前記宛先装置から前記送信元装置へ返されたＡＣＫパケットのＡＣＫ番号、ウィンドウサイズおよび前記ＡＣＫパケットを受信した時刻を対応付けて記憶する第２記憶部と、
前記第１記億部と前記第２記憶部を参照し、第１ＡＣＫパケットが１つの第１データパケットに対応するＡＣＫパケットであるときに、前記第１ＡＣＫパケットに含まれるウィンドウサイズと前記第１ＡＣＫパケットの直前に取得した第２ＡＣＫパケットのウィンドウサイズとに基づいて、前記第１ＡＣＫパケットの受信時刻で往復遅延時間を算出可能か否かを判定し、算出可能な場合、当該受信時刻により算出された往復遅延時間を出力する演算部と、
を有するパケット抽出装置。
【請求項２】
前記演算部は、前記第１ＡＣＫパケットに含まれるウィンドウサイズが前記第２ＡＣＫパケットに含まれるウィンドウサイズよりも大きい場合に、前記第１ＡＣＫパケットの受信時刻で往復遅延時間を算出可能と判定する、請求項１記載のパケット抽出装置。
【請求項３】
前記演算部は、シーケンス番号にサイズを加算した値が前記第１ＡＣＫパケットのＡＣＫ番号に一致するデータパケットを前記第１データパケットと判定し、前記第１データパケットのシーケンス番号に一致するＡＣＫ番号の前記第２ＡＣＫパケットがある場合、前記第１ＡＣＫパケットが１つの前記第１データパケットに対応するＡＣＫパケットであると判定する、請求項１または２記載のパケット抽出装置。
【請求項４】
前記演算部は、前記第１データパケットの受信時刻と前記第１ＡＣＫパケットの受信時刻とに基づいて、往復遅延時間を算出する、請求項１乃至３の何れか１項に記載のパケット抽出装置。
【請求項５】
コンピュータに、
送信元装置から宛先装置へ送られるデータパケットを受信し、受信した前記データパケットに含まれるシーケンス番号、前記データパケットのサイズおよび受信時刻を対応付けて第１記憶部に蓄積し、
前記宛先装置から前記送信元装置へ返されるＡＣＫパケットを受信し、受信した前記ＡＣＫパケットのＡＣＫ番号、ウィンドウサイズおよび受信時刻を対応付けて第２記憶部に蓄積し、
受信した第１ＡＣＫパケットが１つの第１データパケットに対応するＡＣＫパケットであるときに、前記第１ＡＣＫパケットに含まれるウィンドウサイズと前記第１ＡＣＫパケットの直前に取得した第２ＡＣＫパケットのウィンドウサイズとに基づいて、前記第１ＡＣＫパケットの受信時刻で往復遅延時間を算出可能か否かを判定し、算出可能な場合、当該受信時刻により算出された往復遅延時間を出力する、
処理を実行させるパケット抽出プログラム。
【請求項６】
コンピュータが、
送信元装置から宛先装置へ送られるデータパケットを受信し、受信した前記データパケットに含まれるシーケンス番号、前記データパケットのサイズおよび受信時刻を対応付けて第１記憶部に蓄積し、
前記宛先装置から前記送信元装置へ返されるＡＣＫパケットを受信し、受信した前記ＡＣＫパケットのＡＣＫ番号、ウィンドウサイズおよび受信時刻を対応付けて第２記憶部に蓄積し、
受信した第１ＡＣＫパケットが１つの第１データパケットに対応するＡＣＫパケットであるときに、前記第１ＡＣＫパケットに含まれるウィンドウサイズと前記第１ＡＣＫパケットの直前に取得した第２ＡＣＫパケットのウィンドウサイズとに基づいて、前記第１ＡＣＫパケットの受信時刻で往復遅延時間を算出可能か否かを判定し、算出可能な場合、当該受信時刻により算出された往復遅延時間を出力する、
パケット抽出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はパケット抽出装置、パケット抽出プログラムおよびパケット抽出方法に関する。
【背景技術】
【０００２】
現在、コンピュータなどの複数の情報処理装置をネットワークに接続し、ネットワークを介した装置間でのデータ通信が行われている。ネットワーク上でデータをパケット化して伝送するためのプロトコルとしてＴＣＰ／ＩＰ（Transmission Control Protocol／Internet Protocol）がある。
【０００３】
ネットワーク上に流れるパケットを所定の装置に収集して蓄積し、収集したパケットに基づいてネットワークの通信品質を監視することがある。例えば、データパケットおよびデータパケットに対する受信確認応答（ＡＣＫ：ACKnowledgement）パケットの到着時間の差から、データ通信の往復遅延時間（ＲＴＴ：Round Trip Time）を計測し、ＲＴＴを用いて通信品質の評価や輻輳制御を行うことがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−７８０１１号公報
【特許文献２】特開２００８−１８２４１０号公報
【特許文献３】特表２００８−５０８８１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＡＣＫパケットの中には遅延ＡＣＫによるものが含まれ得る。遅延ＡＣＫは、送信元装置により送信されたデータパケットが宛先装置に到着したときに、宛先装置から送信元装置へのＡＣＫパケットの送信を遅延させる手法である。遅延ＡＣＫでは、例えば宛先装置は、受信した複数のデータパケットに対し、１回のＡＣＫ応答を行う。宛先装置は、受信したデータパケットが所定数に達しないまま所定時間を経過してタイムアウトした場合にもＡＣＫ応答を行う。この場合、収集されたパケットのうち、１つのデータパケットに対して応答されたＡＣＫパケットに着目してＲＴＴを算出すると、遅延ＡＣＫにはタイムアウトによる遅延も含まれるため、ＲＴＴの計測精度が悪化するおそれがある。タイムアウトによる遅延ＡＣＫは、宛先装置における待機時間に起因するものであり、ネットワークの伝送路における遅延とは無関係の要因だからである。
【０００６】
遅延ＡＣＫのタイムアウト値が固定であれば、タイムアウト値に応じた遅延を含むＡＣＫパケットを除去してＲＴＴを計算することも考えられる。ところが、タイムアウト値は固定ではなく、当該タイムアウトの影響を除去することは容易でない。
【０００７】
１つの側面では、本発明は、１つのデータパケットに対して応答されたＡＣＫパケットの中からＲＴＴの算出に利用可能なパケットを抽出できるパケット抽出装置、パケット抽出プログラムおよびパケット抽出方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、パケット抽出装置が提供される。パケット抽出装置は、第１記憶部と第２記憶部と演算部とを有する。第１記憶部は、送信元装置から宛先装置へ送られたデータパケットに含まれるシーケンス番号、データパケットのサイズおよびデータパケットを受信した時刻を対応付けて記憶する。第２記憶部は、宛先装置から送信元装置へ返されたＡＣＫパケットのＡＣＫ番号、ウィンドウサイズおよびＡＣＫパケットを受信した時刻を対応付けて記憶する。演算部は、第１記億部と第２記憶部を参照し、第１ＡＣＫパケットが１つの第１データパケットに対応するＡＣＫパケットであるときに、第１ＡＣＫパケットに含まれるウィンドウサイズと第１ＡＣＫパケットの直前に取得した第２ＡＣＫパケットのウィンドウサイズとに基づいて、第１ＡＣＫパケットの受信時刻で往復遅延時間を算出可能か否かを判定し、算出可能な場合、当該受信時刻により算出された往復遅延時間を出力する。
【０００９】
また、１つの態様では、パケット抽出プログラムが提供される。このパケットの抽出プログラムは、コンピュータに、送信元装置から宛先装置へ送られるデータパケットを受信し、受信したデータパケットに含まれるシーケンス番号、前記データパケットのサイズおよび受信時刻を対応付けて第１記憶部に蓄積し、宛先装置から送信元装置へ返されるＡＣＫパケットを受信し、受信したＡＣＫパケットのＡＣＫ番号、ウィンドウサイズおよび受信時刻を対応付けて第２記憶部に蓄積し、受信した第１ＡＣＫパケットが１つの第１データパケットに対応するＡＣＫパケットであるときに、第１ＡＣＫパケットに含まれるウィンドウサイズと第１ＡＣＫパケットの直前に取得した第２ＡＣＫパケットのウィンドウサイズとに基づいて、第１ＡＣＫパケットの受信時刻で往復遅延時間を算出可能か否かを判定し、算出可能な場合、当該受信時刻により算出された往復遅延時間を出力する、処理を実行させる。
【００１０】
また、１つの態様では、パケット抽出方法が提供される。このパケット抽出方法では、コンピュータが、送信元装置から宛先装置へ送られるデータパケットを受信し、受信したデータパケットに含まれるシーケンス番号、前記データパケットのサイズおよび受信時刻を対応付けて第１記憶部に蓄積し、宛先装置から送信元装置へ返されるＡＣＫパケットを受信し、受信したＡＣＫパケットのＡＣＫ番号、ウィンドウサイズおよび受信時刻を対応付けて第２記憶部に蓄積し、受信した第１ＡＣＫパケットが１つの第１データパケットに対応するＡＣＫパケットであるときに、第１ＡＣＫパケットに含まれるウィンドウサイズと第１ＡＣＫパケットの直前に取得した第２ＡＣＫパケットのウィンドウサイズとに基づいて、第１ＡＣＫパケットの受信時刻で往復遅延時間を算出可能か否かを判定し、算出可能な場合、当該受信時刻により算出された往復遅延時間を出力する。
【発明の効果】
【００１１】
１つの側面では、１つのデータパケットに対して応答されたＡＣＫパケットの中からＲＴＴの算出に利用可能なパケットを抽出できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態のパケット抽出装置を示す図である。
【図２】第２の実施の形態の情報処理システムの例を示す図である。
【図３】ウィンドウサイズとネットワーク利用効率との関係の例を示す図である。
【図４】遅延ＡＣＫの例を示す図である。
【図５】ＲＴＴの例を示す図である。
【図６】計測装置のハードウェア例を示す図である。
【図７】計測装置のソフトウェア例を示す図である。
【図８】ヘッダの例を示す図である。
【図９】有線端末の通信例を示す図である。
【図１０】無線端末の通信例を示す図である。
【図１１】ウィンドウサイズの時間変化の例を示す図である。
【図１２】パケットテーブルの例を示す図である。
【図１３】パケットテーブルの例（続き）を示す図である。
【図１４】出力例を示す図である。
【図１５】ＲＴＴの計測例を示すフローチャートである。
【図１６】ＲＴＴの計測結果の例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態のパケット抽出装置を示す図である。第１の実施の形態の情報処理システムは、パケット抽出装置１、送信元装置２、宛先装置３およびアクセスポイント４を含む。パケット抽出装置１、送信元装置２およびアクセスポイント４は、ネットワーク５に接続されている。送信元装置２および宛先装置３は、例えばコンピュータなどの情報処理装置である。アクセスポイント４は、例えば無線基地局である。また、ネットワーク５は有線ネットワークである。宛先装置３とアクセスポイント４との間の区間は無線区間である。送信元装置２および宛先装置３は、アクセスポイント４およびネットワーク５を介してデータ通信を行える。送信元装置２と宛先装置３との間の通信プロトコルには、ＴＣＰ／ＩＰが用いられる。
【００１４】
パケット抽出装置１は、ネットワーク５を経由して送受信されるパケットを収集し、収集したパケットに基づいて通信品質の監視を行う。例えば、パケット抽出装置１は、ネットワーク５においてパケットを中継する中継装置やタップに接続される。中継装置やタップは、送信元装置２および宛先装置３の間で送受信されるパケットを複製して、パケット抽出装置１にも送信する。パケット抽出装置１は、当該複製されたパケットを受信することで、パケットの収集を行える。
【００１５】
パケット抽出装置１が収集するパケットには、送信元装置２が宛先装置３に対して送信するデータパケット、および、宛先装置３が送信元装置２に対して送信する受信確認応答パケット（ＡＣＫパケット）が含まれる。パケット抽出装置１は、宛先装置や送信元装置が複数ある場合でも、パケットに含まれる送信元装置２のＩＰアドレスおよび宛先装置３のＩＰアドレスに基づいて送信元装置２と宛先装置３とで送受信されるパケットを区別できる。ＩＰアドレスに加え、パケットに含まれるポート番号の組み合わせも考慮することで、両装置で実行されるアプリケーションの組み合わせを識別することもできる。送信元装置２および宛先装置３の間で、アプリケーションの当該組み合わせにより専有される論理的な通信路をコネクションと称することがある。
【００１６】
パケット抽出装置１は、送信元装置２により送信されたデータパケットの受信時刻および当該データパケットに対して宛先装置３により送信されたＡＣＫパケットの受信時刻に基づいて往復遅延時間（ＲＴＴ）を計測する。パケット抽出装置１は、送信元装置２および宛先装置３の通信品質の評価に、計測したＲＴＴを用いる。パケット抽出装置１は、パケットに含まれるＴＣＰヘッダのシーケンス番号やデータ長に基づいて、１または複数のデータパケットに対応するＡＣＫパケットを特定できる。
【００１７】
ここで、ＡＣＫパケットによる応答の方法として遅延ＡＣＫが用いられることがある。具体的には、ある期間（例えば、通信の開始直後の期間など）では、宛先装置３は、遅延ＡＣＫではなく通常のＡＣＫ応答（１つのデータパケットの受信に対して返されるＡＣＫ応答）を返し、別の期間では、遅延ＡＣＫによるＡＣＫ応答を返す場合がある。その場合、パケット抽出装置１により収集されたＡＣＫパケットには、次のものが含まれる。
【００１８】
第１には、遅延ＡＣＫを用いていない期間のＡＣＫパケット（１つのデータパケットに対し１つのＡＣＫパケットが応答されたもの）である（第１のケースのＡＣＫパケットと称する）。第２には、遅延ＡＣＫを用いている期間において、２以上の所定数のデータパケットの受信に対して応答されたＡＣＫパケットである。第３には、遅延ＡＣＫを用いている期間において、データパケットの受信が所定数に達する前にタイムアウトして応答されたＡＣＫパケットである（第３のケースのＡＣＫパケットと称する）。第３のケースのＡＣＫパケットには、１つのデータパケットの受信後に、タイムアウトして応答された１つのＡＣＫパケットも含まれることになる。
【００１９】
このため、パケット抽出装置１が、ＴＣＰヘッダのシーケンス番号およびデータ長により、１つのデータパケットに対して応答された１つのＡＣＫパケットを特定すると、第１および第３のケースのＡＣＫパケットの両方を特定する可能性がある。したがって、パケット抽出装置１が、収集したパケットから、単純に１つのデータパケットに対して返された１つのＡＣＫパケットを抽出してＲＴＴを計算すると、ＲＴＴにタイムアウトの影響が含まれてしまい、ＲＴＴの算出精度が悪化するおそれがある。遅延ＡＣＫのタイムアウトは、宛先装置３における待機時間に起因するものであり、ネットワークの伝送路における遅延とは無関係の要因だからである。すなわち、ネットワークの伝送路を要因とする遅延を監視するには、遅延ＡＣＫのタイムアウト分を含まないＲＴＴの計測を行うことが好ましい。
【００２０】
そこで、パケット抽出装置１は、次のようにＲＴＴの算出に用いるＡＣＫパケットの情報を抽出する。パケット抽出装置１は、記憶部１ａ，１ｂおよび演算部１ｃを有する。
記憶部１ａ，１ｂは、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。記憶部１ａ，１ｂは、１つの揮発性記憶装置または不揮発性記憶装置に設けられた２つの記憶領域により実現されてもよい。演算部１ｃは、例えば、プロセッサを含む。プロセッサは、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）でもよいし、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の電子回路でもよい。また、プロセッサは、複数のプロセッサの集合（マルチプロセッサ）でもよい。プロセッサは、例えば、記憶部１ａに記憶されたプログラムを実行するものでもよい。
【００２１】
記憶部１ａは、送信元装置２から宛先装置３へ送られたデータパケットに含まれるシーケンス番号とデータパケットを受信した時刻とを対応付けて記憶する。記憶部１ｂは、宛先装置３から送信元装置２へ返されたＡＣＫパケットのＡＣＫ番号、ウィンドウサイズおよびＡＣＫパケットを受信した時刻を対応付けて記憶する。
【００２２】
演算部１ｃは、送信元装置２から宛先装置３へ送られたデータパケットを受信すると、当該データパケットに含まれるシーケンス番号とデータパケットの受信時刻とを対応付けて記憶部１ａに格納する。例えば、演算部１ｃは、データパケット６を受信すると、データパケット６に含まれるシーケンス番号（Ｓｅｑ）“２００”とデータパケット６の受信時刻とを対応付けて記憶部１ａに格納する。データパケット６のＴＣＰデータ長（Ｌｅｎ）は、“１０”であるとする。演算部１ｃは、データパケット７を受信すると、データパケット７に含まれるシーケンス番号“２１０”とデータパケット７の受信時刻とを対応付けて記憶部１ａに格納する。
【００２３】
演算部１ｃは、宛先装置３から送信元装置２へ返されたＡＣＫパケットを受信すると、当該ＡＣＫパケットのＡＣＫ番号、ウィンドウサイズおよびＡＣＫパケットの受信時刻を対応付けて記憶部１ｂに格納する。ここで、ウィンドウサイズは、送信元装置２が、宛先装置３からのＡＣＫパケットを待たずに送信可能なデータサイズである。宛先装置３は、ＡＣＫパケットにウィンドウサイズの設定値を含めて送信元装置２へ送信する。ウィンドウサイズは、ＲＷＩＮ（Receive WINdow size）とも呼ばれる。例えば、演算部１ｃは、ＡＣＫパケット８を受信すると、ＡＣＫパケット８に含まれるＡＣＫ番号（ＡＣＫ）“２１０”、ウィンドウサイズ（ＷＳ）“１００”およびＡＣＫパケット８の受信時刻を対応付けて記憶部１ｂに格納する。演算部１ｃは、ＡＣＫパケット９を受信すると、ＡＣＫパケット９に含まれるＡＣＫ番号“２２０”、ウィンドウサイズ“１５０”およびＡＣＫパケット９の受信時刻を対応付けて記憶部１ｂに格納する。
【００２４】
演算部１ｃは、記憶部１ａ，１ｂを参照して、取得したＡＣＫパケットのうち、第１ＡＣＫパケットが１つの第１データパケットに対して返されたＡＣＫパケットであることを判定する。ここで、あるデータパケットのシーケンス番号と当該データパケットのサイズとの和は、当該データパケットに対するＡＣＫパケットのＡＣＫ番号に一致する。このため、例えば、演算部１ｃは、取得したデータパケットのうち、シーケンス番号にサイズを加算した値が第１ＡＣＫパケットのＡＣＫ番号に一致するデータパケットを検索し、当該データパケットを第１ＡＣＫパケットに対応する第１データパケットと判定する。すなわち、第１ＡＣＫパケットは第１データパケットに対する応答である。
【００２５】
このとき、第１データパケットのシーケンス番号に一致するＡＣＫ番号である第２ＡＣＫパケットがあれば、第１ＡＣＫパケットは１つの第１データパケットに対して返されたＡＣＫパケットであると考えられる。第１ＡＣＫパケットのＡＣＫ番号は第２ＡＣＫパケットのＡＣＫ番号に対して、１つの第１データパケットのサイズ分だけ加算されていることになるからである。第１ＡＣＫパケットとのＡＣＫ番号の差が、第１データパケットのサイズに一致する第２ＡＣＫパケットがある場合に、第１ＡＣＫパケットは１つの第１データパケットに対して返されたＡＣＫパケットであるということもできる。
【００２６】
例えば、ＡＣＫパケット９に着目するとき、データパケット７のシーケンス番号“２１０”とサイズ“１０”とを加算した値“２２０”は、ＡＣＫパケット９のＡＣＫ番号“２２０”に一致する。よって、ＡＣＫパケット９（第１ＡＣＫパケットに相当）に対応するデータパケットは、データパケット７（第１データパケットに相当）である。そして、演算部１ｃは、データパケット７のシーケンス番号“２１０”に一致するＡＣＫ番号“２１０”であるＡＣＫパケット８（第２ＡＣＫパケットに相当）を特定する。あるいは、演算部１ｃは、ＡＣＫパケット９とのＡＣＫ番号の差がデータパケット７のサイズ“１０”に一致するＡＣＫパケットとして、ＡＣＫパケット８を特定してもよい。ＡＣＫパケット８が存在するので、ＡＣＫパケット９は、１つのデータパケット７に対して返されたＡＣＫパケットである。
【００２７】
演算部１ｃは、第１ＡＣＫパケットが１つのデータパケットに対して返されたＡＣＫパケットであるときに、第１ＡＣＫパケットの直前に取得した第２ＡＣＫパケットに含まれるウィンドウサイズと第１ＡＣＫパケットに含まれるウィンドウサイズとに基づいて、第１ＡＣＫパケットの受信時刻でＲＴＴを算出可能か否かを判定する。例えば、上記のように宛先装置３がアクセスポイント４と無線通信を行う場合、第１ＡＣＫパケットに含まれるウィンドウサイズが第２ＡＣＫパケットに含まれるウィンドウサイズ以上のときに第１ＡＣＫパケットの受信時刻でＲＴＴを算出可能と判定する。一方、演算部１ｃは、第１ＡＣＫパケットに含まれるウィンドウサイズが第２ＡＣＫパケットに含まれるウィンドウサイズ未満のときに当該第１ＡＣＫパケットの受信時刻でＲＴＴを算出しないと判定する。ＲＴＴ算出可否の判定にウィンドウサイズを用いる理由は次の通りである。
【００２８】
無線通信を行う宛先装置３では、最初は小さなウィンドウサイズを使用して、徐々にウィンドウサイズを大きくするよう制御することがある。無線区間は、有線区間に比べて低速かつ不安定なことがあり、通信速度の立ち上がりを比較的緩やかにすることで、無線区間で利用可能な通信量に比べて送信元装置２が過剰にデータパケットを送信するのを抑制するためである。また、無線区間は有線区間に比べて通信速度が小さく、データパケット６，７が宛先装置３に順次到着したときの到着時刻の間隔は、データパケット６，７がアクセスポイント４に順次到着したときの到着時刻の間隔よりも大きくなる。このため、ウィンドウサイズが比較的小さい段階で（ウィンドウサイズを大きくできるにも関わらず）遅延ＡＣＫを使用すると、宛先装置３で次のデータパケットの到着をタイムアウト時間まで待機することによってＡＣＫ応答までの遅延が増加したときに、逆にネットワークの利用効率が悪くなるおそれがある。
【００２９】
したがって、ウィンドウサイズを大きくできるときには、遅延ＡＣＫを用いるよりも、１つのデータパケットに対して１つのＡＣＫパケットを応答する方がネットワークの利用効率がよいと考えられる。このような理由から、宛先装置３は、ウィンドウサイズを大きくできる期間では、遅延ＡＣＫを用いずに、１つのデータパケットに対して１つのＡＣＫパケットを応答することがある。よって、第１ＡＣＫパケットが１つのデータパケットに対して返されたＡＣＫパケットであり、かつ、第１ＡＣＫパケットに含まれるウィンドウサイズが第２ＡＣＫパケットに含まれるウィンドウサイズ以上のとき、第１ＡＣＫパケットは遅延ＡＣＫによるものではないと推定できる。
【００３０】
より具体的には、ＡＣＫパケット９（第１ＡＣＫパケットに相当）に含まれるウィンドウサイズ“１５０”は、ＡＣＫパケット８（第２ＡＣＫパケットに相当）に含まれるウィンドウサイズ“１００”よりも大きい。この場合、ＡＣＫパケット９は、遅延ＡＣＫによるＡＣＫ応答ではないと判断できる。よって、演算部１ｃは、ＡＣＫパケット９の受信時刻でＲＴＴを算出可能であると判定する。
【００３１】
演算部１ｃは、第１ＡＣＫパケットの受信時刻でＲＴＴを算出可能な場合、当該受信時刻により算出されたＲＴＴを出力する。例えば、演算部１ｃは、データパケット７の受信時刻とＡＣＫパケット９の受信時刻との差をＲＴＴとして算出し、出力する。図１では、送信元装置２がデータパケット７を送信した時刻とＡＣＫパケット９を受信した時刻との差（送信元装置２における時間差）をＲＴＴとして示している。パケット抽出装置１がネットワーク５における送信元装置２の近傍に設けられているとき、送信元装置２における当該時間差と、パケット抽出装置１が計測するＲＴＴとは、ほぼ一致すると考えてよい。
【００３２】
このように、パケット抽出装置１は、収集したＡＣＫパケットのウィンドウサイズに基づく判定を行うことで、１つのデータパケットに対して応答されたＡＣＫパケットの中から、遅延ＡＣＫによるＡＣＫパケット以外のＡＣＫパケットを抽出できる。これにより、１つのデータパケットに対して応答されたＡＣＫパケットの中からＲＴＴの算出に利用可能なパケットを抽出できる。
【００３３】
また、パケット抽出装置１は、遅延ＡＣＫによるタイムアウトの影響を含むＡＣＫパケットを用いずにＲＴＴを算出することで、ＲＴＴの計測精度を向上できる。ＲＴＴは、ネットワーク品質を示す指標として用いられる。したがって、ＲＴＴ計測精度が向上することで、ネットワーク品質をより正確に推定可能となる。
【００３４】
更に、遅延ＡＣＫが常に利用されていることが明らかであれば、例えば、特開２００９−３０３０８９号公報の方法を用いて、遅延ＡＣＫのタイムアウトの影響を受けないようＲＴＴを計測することも考えられる。具体的には、遅延ＡＣＫで２つのデータに対して１つのＡＣＫパケットが返される場合、２つのデータに対して返されたＡＣＫパケットのみを用いてＲＴＴを計測し、１つのデータパケットに対して返されたＡＣＫパケットのＲＴＴを計測しないようにする。しかし、宛先装置３のように、遅延ＡＣＫの利用／非利用を切り替える装置に対してこの方法を適用すると、収集したパケットから遅延ＡＣＫ非利用時のＲＴＴを計測できなくなってしまう。
【００３５】
これに対し、パケット抽出装置１によれば、宛先装置３のように遅延ＡＣＫの利用／非利用を切り替える装置に対しても、遅延ＡＣＫ非利用のときのＲＴＴを、収集したパケットから計測できるようになり、ＲＴＴの計測機会を増やせる。その結果、ＲＴＴの変動を詳細に把握可能となり、ネットワークの監視をより詳細に行えるようになる。
【００３６】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムの例を示す図である。第２の実施の形態の情報処理システムは、計測装置１００、サーバ２００および端末装置３００，４００を含む。サーバ２００と端末装置３００とは、ネットワーク１０，２０および基地局３０を介して通信可能である。サーバ２００と端末装置４００とは、ネットワーク１０，２０およびルータ４０を介して通信可能である。ネットワーク１０は、例えばＬＡＮ（Local Area Network）である。ネットワーク２０は、例えば、ＷＡＮ（Wide Area Network）やインターネットなどである。
【００３７】
ネットワーク１０は、ネットワーク２０と接続されている。サーバ２００は、ネットワーク１０に接続されている。ネットワーク１０には、タップ１１が設けられている。タップ１１は、計測装置１００と接続されている。タップ１１は、パケットを中継するとともに、中継するパケットを複製して計測装置１００に送信する。所定のポートを通過するパケットを複製して他のポート（計測装置１００が接続されたポート）からも出力する機能（ポートミラーリング機能と称することがある）を備えたスイッチなどを、タップ１１の代わりに用いてもよい。
【００３８】
ネットワーク２０は、基地局３０およびルータ４０と接続されている。ネットワーク２０と基地局３０との間には、移動通信用のネットワークが介在してもよい。ネットワーク２０とルータ４０との間には、ネットワーク１０，２０以外のネットワーク（ＬＡＮやＷＡＮなど）が介在してもよい。
【００３９】
基地局３０は、サーバ２００と端末装置３００との間の通信を中継する。基地局３０と端末装置３００との間の通信には、例えばＨＳＤＰＡ（High-Speed Downlink Packet Access）やＬＴＥ（Long Term Evolution）などが用いられる。ルータ４０は、サーバ２００と端末装置４００との間の通信を中継する。基地局３０と端末装置３００との間の区間は、無線区間である。それ以外の装置間の区間はイーサネット（登録商標）による有線区間である。第２の実施の形態の情報処理システムのうち、サーバ２００により近い側を上流側、端末装置３００，４００により近い側を下流側と称することがある。
【００４０】
計測装置１００は、タップ１１から受信したパケットを記憶し、解析するコンピュータである。計測装置１００は、例えば、サーバ２００に近い上流側でパッシブ計測（サーバとエンド端末との間で送受信される信号を観察し、その振る舞いからネットワークの品質などの指標を得る手法）を行う。計測装置１００は、受信したパケットに基づいてＲＴＴを計測し、ネットワークにおける通信品質の劣化の検出や通信品質の改善に役立てる。計測装置１００は、第１の実施の形態で例示したパケット抽出装置１の一例である。
【００４１】
サーバ２００は、端末装置３００，４００に所定のサービスを提供するサーバコンピュータである。端末装置３００は、ユーザによって利用される、携帯電話機、スマートフォンまたはタブレット装置などの無線端末装置である。端末装置４００は、ユーザによって利用されるクライアントコンピュータなどの端末装置である。サーバ２００と端末装置３００，４００との間の通信にはＴＣＰ／ＩＰが用いられる。
【００４２】
ここで、サーバ２００が、ある端末装置からのＡＣＫパケットの応答を待たずに、当該端末装置に対して送信できるデータのサイズはウィンドウサイズと呼ばれ、当該端末装置３００，４００からサーバ２００へ通知される。ウィンドウサイズは、ネットワーク利用効率に影響する。サーバ２００と端末装置４００との間のウィンドウサイズとネットワーク利用効率との関係を例示する。
【００４３】
図３は、ウィンドウサイズとネットワーク利用効率との関係の例を示す図である。なお、図３の例では、遅延ＡＣＫ（Delayed ACK）を用いない場合を例示している。例えば、有線ネットワークのように比較的高速な伝送路では、ウィンドウサイズ（図中、ＷＳ（Window Sizeの略）と表記することがある）が大きいほど、ネットワーク利用効率は良くなる傾向にある。ウィンドウサイズが大きいほど、サーバ２００が次のデータパケットを送信するまでに待機する平均の時間が低減するからである。ここで、ＡＣＫパケットとの対比が分かり易いよう、データパケットをＤＡＴＡパケットと表記することがある。
【００４４】
例えば、ウィンドウサイズが１ＭＳＳ（Maximum Segment Size）である場合（ＭＳＳの１倍）を考える。ＭＳＳは、１つのＴＣＰセグメントに対して許容される最大のペイロードサイズである。この場合、サーバ２００は、１つのＤＡＴＡパケット（図中、ＤＡＴＡと表記することがある）を端末装置４００に送信する。端末装置４００は、当該１つのＤＡＴＡパケットを受信すると、ＡＣＫパケットをサーバ２００に送信する。サーバ２００は、当該ＡＣＫパケット（図中、ＡＣＫと表記することがある）を受信すると、サーバ２００は、次のＤＡＴＡパケットを送信する。
【００４５】
一方、例えば、ウィンドウサイズが４ＭＳＳ（ＭＳＳの４倍）であれば、サーバ２００は、端末装置４００からのＡＣＫパケットを待たずに４つのＤＡＴＡパケットを送信できることになる。同様に、例えば、ウィンドウサイズが８ＭＳＳ（ＭＳＳの８倍）であれば、サーバ２００は、端末装置４００からＡＣＫパケットを待たずに８つのＤＡＴＡパケットを送信できることになる。
【００４６】
ただし、端末装置４００が１つのＤＡＴＡパケットを受信した後、直ちにＡＣＫパケットをサーバ２００に返すと、現ウィンドウサイズよりも小さなウィンドウサイズをＡＣＫパケットに含めて応答する可能性がある。ＡＣＫパケットの送信時に、端末装置４００で未処理のＤＡＴＡパケットが端末装置４００のバッファに残っている可能性があるためである。
【００４７】
そこで、遅延ＡＣＫが用いられる。端末装置４００によるＡＣＫ送信を遅らせることで、処理を終えていないＤＡＴＡパケットが減少した状態（バッファの残容量が増えた状態）でＡＣＫ送信でき、現ウィンドウサイズよりも小さなウィンドウサイズが指定される可能性を低減できるからである。また、ネットワーク１０，２０に流れるＡＣＫパケットの数も減らせる。
【００４８】
図４は、遅延ＡＣＫの例を示す図である。図４（Ａ）は、複数のＤＡＴＡパケットに対して、１つのＡＣＫパケットが返される場合を例示している。特に、図４（Ａ）は、一例として、２つのＤＡＴＡパケットに対して１つのＡＣＫパケットが返される場合である。サーバ２００は、２つのＤＡＴＡパケットを端末装置４００に順次送信する。端末装置４００は、２つのＤＡＴＡパケットを順次受信する。端末装置４００は、２つ目のＤＡＴＡパケットを受信すると、ＡＣＫパケットをサーバ２００に送信する。この場合、１つ目のＤＡＴＡパケットが端末装置４００に到着した時刻と２つ目のＤＡＴＡパケットが端末装置４００に到着した時刻との間の時間間隔が、端末装置４００における遅延ｔ１となる。
【００４９】
図４（Ｂ）は、タイムアウトして１つのＡＣＫパケットが返される場合を例示している。サーバ２００は、１つのＤＡＴＡパケットを端末装置４００に送信する。端末装置４００は、当該１つのＤＡＴＡパケットを受信する。図４（Ｂ）の場合、端末装置４００は、１つのＤＡＴＡパケットを受信した後、２つ目のＤＡＴＡパケットを受信しないまま、タイムアウト時間が経過したことを検出する。すると、端末装置４００は、ＡＣＫパケットをサーバ２００に送信する。この場合、タイムアウト時間が端末装置４００における遅延ｔ２となる。１つのＤＡＴＡパケットに対して応答されたＡＣＫパケットを抽出してＲＴＴを計算すると、遅延ｔ２がＲＴＴの計算結果に反映されてしまう。
【００５０】
遅延ｔ２は、端末装置４００における待機時間に起因するものであり、ネットワーク１０，２０における伝送路（スイッチなどを含む）とは無関係の要因である。このため、図４（Ｂ）のＡＣＫパケットで計測されるＲＴＴは、ネットワークの監視用途には不適切である。
【００５１】
図４までは端末装置４００について説明したが、端末装置３００についても同様のことがいえる。ここで、端末装置４００のように有線ネットワークに接続され、比較的高速に通信できる場合には、遅延ＡＣＫが主に用いられる。このため、サーバ２００と端末装置４００との間の通信に対しては、例えば、特開２００９−３０３０８９号公報の方法を用いて、図４（Ａ）に示す２つ目のＤＡＴＡパケットとＡＣＫパケットとを抽出してＲＴＴを計測することが考えられる。こうすれば、図４（Ｂ）の遅延ＡＣＫのタイムアウトの影響をＲＴＴに含めなくて済む。
【００５２】
しかし、無線通信を行う端末（例えば、端末装置３００）の場合、１つのコネクションの通信において、遅延ＡＣＫを利用しないこともあるし、遅延ＡＣＫを利用することもある。このため、特開２００９−３０３０８９号公報の方法を用いて、サーバ２００と端末装置３００との間の通信におけるＲＴＴを計測すると、ＲＴＴの計測機会が減少するおそれがある。具体的には、ＲＴＴを計測できない期間が生じたり、計測されるＲＴＴのサンプル数が低減したりするおそれがある。すると、通信の監視を行えない期間が生じたり、ＲＴＴの計測精度が悪化したりする可能性がある。具体的には次の通りである。
【００５３】
図５は、ＲＴＴの例を示す図である。図５では、サーバ２００と端末装置３００との間の通信におけるＲＴＴを例示する。図５（Ａ）は、単純に１つのＤＡＴＡパケットに対して返されたＡＣＫパケットに着目したときのＲＴＴの計算結果の例である。計測装置１００は、１つのＡＣＫパケットに対し、当該ＡＣＫパケットの受信時刻と当該ＡＣＫパケットに対応するＤＡＴＡパケットの受信時刻とを用いて、１つのＲＴＴを計算できる。
【００５４】
図５（Ａ）の横軸は、パケット番号である。パケット番号は、端末装置３００からのＡＣＫパケットが計測装置１００に到着した順序を便宜的に示す番号であり、時間に相当すると考えてもよい。パケット番号が小さいＡＣＫパケットほど先に送信され、パケット番号が大きいＡＣＫパケットほど後に送信されたことを示す。図５（Ａ）の縦軸はＲＴＴ（秒）である。
【００５５】
例えば、計算結果Ｇ１は、ＲＴＴの計算結果のうち、遅延ＡＣＫによるタイムアウト分を含まないものを示す。計算結果Ｇ２は、ＲＴＴの計算結果のうち、遅延ＡＣＫによるタイムアウト分を含むものを示す。計算結果Ｇ２は、遅延ＡＣＫのタイムアウト分を含むため、計算結果Ｇ１よりもＲＴＴの値が大きく計算されてしまう。
【００５６】
図５（Ｂ）は、端末装置３００が送信したＡＣＫパケットのＡＣＫ番号の差とＲＴＴとの関係の例である。図５（Ｂ）の横軸はパケット番号である。図５（Ｂ）の縦軸は、ＡＣＫ番号の差（バイト）およびＲＴＴ（秒）である。
【００５７】
ＡＣＫ番号の差は、端末装置３００が順番に送信した２つのＡＣＫパケットに含まれるＡＣＫ番号の差である。ＡＣＫ番号の差は、当該２つのＡＣＫパケットのうち、１番目に到着したＡＣＫパケットと２番目に到着したＡＣＫパケットとの間にサーバ２００が送信したデータのサイズ（ＴＣＰのペイロードサイズの合計）に相当する。
【００５８】
例えば、サーバ２００が送信する１つのＤＡＴＡパケットのＭＳＳは、１３９４バイトである。この場合、ＡＣＫ番号の差が１３９４バイトであれば、２つのＡＣＫパケットのうち、２番目に到着したＡＣＫパケットは、１つのＤＡＴＡパケットに対して返されたＡＣＫパケットということになる。また、例えば、ＡＣＫ番号の差が２７８８バイト（１３９４バイトの２倍）であれば、２番目に到着したＡＣＫパケットは、２つのＤＡＴＡパケットに対して返されたＡＣＫパケットということになる。
【００５９】
図５（Ｂ）を参照すると、ＲＴＴの系列Ｈ１の期間と、ＲＴＴの系列Ｈ２の期間とで、ＡＣＫ番号の差が異なっている。具体的には、系列Ｈ１の期間では、ＡＣＫ番号の差が１３９４バイトである。系列Ｈ２の期間では、ＡＣＫ番号の差が２７８８バイトである。すなわち、端末装置３００によるＡＣＫ応答の制御では、１つのＤＡＴＡパケットに対してＡＣＫパケットを応答する期間もあるし、２つのＤＡＴＡパケットに対してＡＣＫパケットを応答する期間（遅延ＡＣＫを用いる期間）もあることを示唆する。
【００６０】
このため、前述のように、特開２００９−３０３０８９号公報の方法を用いて、サーバ２００と端末装置３００との間の通信におけるＲＴＴを計測すると、ＲＴＴを計測できない期間（系列Ｈ１の期間）が生じ得る。すなわち、系列Ｈ１で示されるＲＴＴを計測できないおそれがある。また、計測されるＲＴＴのサンプル数が低減し、ＲＴＴの計測精度が悪化し得る。
【００６１】
ここで、遅延ＡＣＫのタイムアウト値が固定であれば、タイムアウト値に応じた遅延を含むＡＣＫパケットのＲＴＴから、タイムアウト値を除去して、ＲＴＴ（補正されたＲＴＴ）を計算することも考えられる。ところが、タイムアウト値は固定ではなく（例えば、ＯＳなどのソフトウェアによって異なることもある）、当該タイムアウトの影響を除去してＲＴＴを計測することは容易でない。
【００６２】
そこで、計測装置１００は、サーバ２００と端末装置３００との間の通信におけるＲＴＴをより詳細に計測可能にする機能を提供する。
図６は、計測装置のハードウェア例を示す図である。計測装置１００は、プロセッサ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、読み取り装置１０６および通信インタフェース１０７を有する。各ユニットは計測装置１００のバスに接続されている。
【００６３】
プロセッサ１０１は、計測装置１００の情報処理を制御する。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００６４】
ＲＡＭ１０２は、計測装置１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００６５】
ＨＤＤ１０３は、計測装置１００の補助記憶装置である。ＨＤＤ１０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、ＯＳのプログラム、アプリケーションプログラム、および各種データを記憶する。計測装置１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００６６】
画像信号処理部１０４は、プロセッサ１０１からの命令に従って、計測装置１００に接続されたディスプレイ１２に画像を出力する。ディスプレイ１２としては、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００６７】
入力信号処理部１０５は、計測装置１００に接続された入力デバイス１３から入力信号を取得し、プロセッサ１０１に出力する。入力デバイス１３としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００６８】
読み取り装置１０６は、記録媒体１４に記録されたプログラムやデータを読み取る装置である。記録媒体１４として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体１４として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。読み取り装置１０６は、例えば、プロセッサ１０１からの命令に従って、記録媒体１４から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００６９】
通信インタフェース１０７は、所定のケーブルを用いてタップ１１に接続されている。通信インタフェース１０７は、サーバ２００と端末装置３００との間で送受信されるパケットやサーバ２００と端末装置４００との間で送受信されるパケットをタップ１１から受信する。
【００７０】
サーバ２００や端末装置３００，４００も計測装置１００と同様のユニットを用いて実現できる。なお、ディスプレイ１２や入力デバイス１３を計測装置１００に外付けするものとして例示したが、計測装置１００、サーバ２００および端末装置３００，４００は、ディスプレイや入力デバイスの少なくとも何れかを備えてもよい。また、端末装置３００は、通信インタフェースとして、基地局３０と通信する無線部を有する。
【００７１】
図７は、計測装置のソフトウェア例を示す図である。計測装置１００は、記憶部１１０、受信部１２０、分類部１３０、ＤＡＴＡパケット処理部１４０、ＡＣＫパケット処理部１５０およびＲＴＴ算出部１６０を有する。記憶部１１０は、ＲＡＭ１０２やＨＤＤ１０３に確保された記憶領域を用いて実現され得る。受信部１２０、分類部１３０、ＤＡＴＡパケット処理部１４０、ＡＣＫパケット処理部１５０およびＲＴＴ算出部１６０は、ＲＡＭ１０２に記憶された所定のプログラムがプロセッサ１０１により実行されることで実現され得る。
【００７２】
記憶部１１０は、収集されたパケットの情報を記憶する。記憶部１１０は、収集されたパケットの情報に基づいて計算されたＲＴＴの情報を記憶する。
受信部１２０は、タップ１１から送信されたパケットを受信する。受信するパケットには、サーバ２００が端末装置３００に送信したＤＡＴＡパケットや、端末装置３００がサーバ２００に送信したＡＣＫパケットが含まれる。
【００７３】
分類部１３０は、受信部１２０が受信したパケットを分類する。具体的には、分類部１３０は、パケットに含まれるヘッダ情報に基づき、解析対象となるパケットを抽出する。分類部１３０は、抽出したパケットのＩＰヘッダにおける送信元ＩＰアドレスおよび宛先ＩＰアドレスの組と、ＴＣＰヘッダにおける送信元ポート番号および宛先ポート番号の組とによりコネクションを特定する。例えば、記憶部１１０には、監視対象とするサーバ２００および端末装置３００，４００のＩＰアドレスの情報が予め格納されている。また、記憶部１１０には、監視対象とする各アプリケーションが用いるポート番号の情報が予め格納されている。
【００７４】
分類部１３０は、解析対象のパケットにおけるＴＣＰのペイロードサイズ（単にＴＣＰペイロードサイズということがある）が０でないとき、当該パケットをＤＡＴＡパケットであると判定し、当該ＤＡＴＡパケットの処理をＤＡＴＡパケット処理部１４０に委譲する。分類部１３０は、ＴＣＰペイロードサイズが０のときに、当該パケットをＡＣＫパケットであると判定し、当該ＡＣＫパケットの処理をＡＣＫパケット処理部１５０に委譲する。
【００７５】
ＤＡＴＡパケット処理部１４０は、ＤＡＴＡパケットに対する処理を行う。ＤＡＴＡパケット処理部１４０は、記録部１４１を有する。記録部１４１は、ＤＡＴＡパケットの情報を、当該ＤＡＴＡパケットの受信時刻に対応付けて、記憶部１１０に格納する。ＤＡＴＡパケットの情報には、シーケンス番号とＴＣＰペイロードサイズとが含まれる。
【００７６】
ＡＣＫパケット処理部１５０は、ＡＣＫパケットに対する処理を行う。ＡＣＫパケット処理部１５０は、記録部１５１、解析部１５２およびＷＳ比較部１５３を有する。
記録部１５１は、ＡＣＫパケットの情報を、当該ＡＣＫパケットの受信時刻に対応付けて、記憶部１１０に格納する。ＡＣＫパケットの情報には、ＡＣＫ番号とウィンドウサイズとが含まれる。
【００７７】
解析部１５２は、記憶部１１０に記憶されたＤＡＴＡパケットおよびＡＣＫパケットの情報に基づいて、１つのＤＡＴＡパケットに対して応答されたＡＣＫパケットを抽出する。解析部１５２は、第１のＡＣＫパケットのＡＣＫ番号と第１のＡＣＫパケットよりも１つ前に受信した第２のＡＣＫパケットのＡＣＫ番号との差分を求める。解析部１５２は、当該差分が、第１のＡＣＫパケットに対応するＤＡＴＡパケットのサイズと同じであるときに、第１のパケットが１つのＤＡＴＡパケットに対して応答されたＡＣＫパケットであると判定する。
【００７８】
ＷＳ比較部１５３は、１つのＤＡＴＡパケットに対して応答された第１のＡＣＫパケットの第１のウィンドウサイズと、第１のＡＣＫパケットよりも１つ前に受信した第２のＡＣＫパケットの第２のウィンドウサイズとを比較する。ＷＳ比較部１５３は、当該比較結果に応じて、第１のＡＣＫパケットをＲＴＴの計算に利用するか否かを判定する。
【００７９】
具体的には、ＷＳ比較部１５３は、第１のウィンドウサイズが、第２のウィンドウサイズ以上のときに、第１のＡＣＫパケットをＲＴＴの計算に利用すると判定する。ＷＳ比較部１５３は、第１のウィンドウサイズが、第２のウィンドウサイズ未満のときに、第１のＡＣＫパケットをＲＴＴの計算に利用しないと判定する。
【００８０】
ＲＴＴ算出部１６０は、ＷＳ比較部１５３により、ＲＴＴの計算に利用すると判定されたＡＣＫパケットを用いて、ＲＴＴを算出する。具体的には、ＲＴＴ算出部１６０は、当該ＡＣＫパケットの受信時刻と当該ＡＣＫパケットに対応するＤＡＴＡパケットの受信時刻との差を、ＲＴＴとして算出する。ＲＴＴ算出部１６０は、ＲＴＴの計算結果を出力する。例えば、ＲＴＴ算出部１６０は、ＲＴＴの計算結果の情報を記憶部１１０に格納する。ＲＴＴ算出部１６０は、ＲＴＴの計算結果をディスプレイ１２に表示させてもよい。
【００８１】
図８は、ヘッダの例を示す図である。図８（Ａ）はイーサネットヘッダの例である。図８（Ｂ）はＩＰヘッダの例である。図８（Ｃ）はＴＣＰヘッダの例である。分類部１３０は、受信したパケットにおいて、イーサネットヘッダのタイプフィールドが“０８００”であればＩＰｖ４（IP version 4）であり、ＩＰヘッダのプロトコルフィールドが“６”であればＴＣＰであると判定する。
【００８２】
また、分類部１３０は、ＩＰヘッダに含まれる送信元／宛先ＩＰアドレスと、ＴＣＰヘッダに含まれる送信元ポート番号／宛先ポート番号の組み合わせによって、コネクションを分類する。更に、ＴＣＰヘッダには、シーケンス番号、ＡＣＫ番号およびウィンドウサイズなどの値が格納されるフィールドも含まれる。更に、ＴＣＰヘッダのコードビットのフィールドは、ＡＣＫ番号に有効な値が格納されていることを示すＡＣＫフラグを含む。
【００８３】
なお、図８（Ｂ）ではＩＰｖ４のヘッダを例示したが、計測装置１００は、ＩＰｖ６のヘッダでも以降に示すＩＰｖ４と同様の制御を行える（例えば、ＩＰｖ６ヘッダであっても送信元／宛先ＩＰアドレスや上位プロトコルを識別する情報が含まれる）。
【００８４】
ところで、ＷＳ比較部１５３は、ウィンドウサイズに基づいて、ＲＴＴの計算に用いるＡＣＫパケットを判定するものとしたが、その理由は次の通りである。
図９は、有線端末の通信例を示す図である。図９は、サーバ２００と端末装置４００との通信例である。図９（Ａ）は、遅延ＡＣＫ未使用の場合を例示する。図９（Ｂ）は、遅延ＡＣＫ使用の場合を例示する。図３でも述べたように、有線の伝送路は、無線の伝送路に比べて高速な通信が可能であり、通信開始当初から比較的大きなウィンドウサイズが用いられる。このため、遅延ＡＣＫ未使用の場合、すぐにデータ処理を行えずに、端末装置４００からサーバ２００へ通知されるウィンドウサイズが減少していくおそれがある（図９（Ａ））。図９（Ａ）では、ウィンドウサイズ（ＷＳ）がＷＳ＝３，２，１，０と徐々に減少していく例を示している。
【００８５】
そこで、端末装置４００は、遅延ＡＣＫを使用することで、データ処理を行ってからＡＣＫ応答できる可能性が高まる。その結果、端末装置４００からサーバ２００へ通知されるウィンドウサイズが減少することを抑えられる（図９（Ｂ））。図９（Ｂ）では、２つのＤＡＴＡパケットに対して１つのＡＣＫを応答することで、ウィンドウサイズ（ＷＳ）をＷＳ＝４，４と維持される例を示している。
【００８６】
このように、サーバ２００と端末装置４００との間の通信では、遅延ＡＣＫを用いる方が、１つのＤＡＴＡパケットに対してＡＣＫ応答するよりも効率がよい。
図１０は、無線端末の通信例を示す図である。図１０は、サーバ２００と端末装置３００との通信例である。図１０（Ａ）は、遅延ＡＣＫ未使用の場合を例示する。図１０（Ｂ）は、遅延ＡＣＫ使用の場合を例示する。端末装置３００では、例えば、端末装置３００で実行されるＯＳにより、通信開始当初は小さなウィンドウサイズを使用し、徐々にウィンドウサイズを大きくするよう制御することがある。無線区間は、有線区間に比べて低速かつ不安定なことがあり、通信速度の立ち上がりを比較的緩やかにすることで、無線区間で利用可能な通信量に比べてサーバ２００が過剰にＤＡＴＡパケットを送信するのを抑制するためである。また、無線区間は、有線区間に比べて通信速度が小さく、複数のＤＡＴＡパケットが端末装置３００に順次到着したときの到着時刻の間隔は、当該複数のＤＡＴＡパケットが基地局３０に順次到着したときの到着時刻の間隔よりも大きくなる。このため、ウィンドウサイズが比較的小さい段階で（ウィンドウサイズを大きくできるにも関わらず）遅延ＡＣＫを使用すると、端末装置３００で次のＤＡＴＡパケットをタイムアウト時間まで待機することによって遅延が増加したときに、逆にネットワークの利用効率が悪くなるおそれがある（図１０（Ｂ））。ここで、図１０（Ｂ）の時間ｔ３は、タイムアウトによる遅延分を示す。
【００８７】
したがって、ウィンドウサイズを大きくできるときには、遅延ＡＣＫを用いるよりも、１つのＤＡＴＡパケットに対してＡＣＫパケットを応答する方がネットワークの利用効率がよいと考えられる。このような理由から、端末装置３００は、ウィンドウサイズを大きくできる期間では、遅延ＡＣＫを用いずに、１つのＤＡＴＡパケットに対してＡＣＫパケットを応答することがある（図１０（Ａ））。図１０（Ａ）では、端末装置３００がサーバ２００に対して、１つのＤＡＴＡパケットを受信するたびにＡＣＫパケットを応答し、かつ、通知するウィンドウサイズ（ＷＳ）をＷＳ＝４，５，６，７，８と徐々に大きくしていく例を示している。
【００８８】
図１１は、ウィンドウサイズの時間変化の例を示す図である。系列Ｋは、端末装置３００がサーバ２００に通知するウィンドウサイズの時間変化を示している。横軸はパケット番号である（前述のように時間に相当すると考えてよい）。系列Ｋに対する縦軸はバイトである（系列Ｋには、１０００００、２０００００、３０００００、４０００００、５０００００という目盛が対応する）。期間Ｔ１は、遅延ＡＣＫが用いられていない期間である。期間Ｔ１に続く期間Ｔ２は、遅延ＡＣＫが用いられている期間である。
【００８９】
図１１のグラフでは、ＡＣＫパケットに対して計測されたＲＴＴの例および１つ前のＡＣＫパケットとのＡＣＫ番号の差の例も示されている。ＲＴＴに対する縦軸は、秒である。ＡＣＫ番号の差に対する縦軸は、バイトである（ＡＣＫ番号の差には、１３９４、２７８８、４１８２、５５７６、６９７０、８３６４という目盛が対応する）。
【００９０】
系列Ｋによれば、端末装置３００のＡＣＫ応答では、遅延ＡＣＫを用いずに、１つのＤＡＴＡパケットに対してＡＣＫパケットを返す期間Ｔ１において、ウィンドウサイズを徐々に大きくしていくという特色が見られる。遅延ＡＣＫが用いられる期間Ｔ２では、ウィンドウサイズの変化はほとんど見られない。
【００９１】
計測装置１００は、期間Ｔ１における、端末装置３００のＡＣＫ応答制御の特色を利用することで、１つのデータに対して応答されたＡＣＫパケットのうち、遅延ＡＣＫによるＡＣＫパケット以外のＡＣＫパケットを抽出する。
【００９２】
図１２は、パケットテーブルの例を示す図である。パケットテーブル１１１は、計測装置１００によって収集されるパケットの情報である。パケットテーブル１１１は、記憶部１１０に格納される。パケットテーブル１１１は、Ｎｏ．，ＴＩＭＥ，ＳＡ（Source Address）、ＳＰ（Source Port）、ＤＡ（Destination Address）、ＤＰ（Destination Port）、Ｐｒｏｔｏｃｏｌ、ＴＣＰ  ＬＥＮ（Lengthの略）、ＩＰ  ＬＥＮ、ｓｅｑ（sequenceの略）、ｎｅｘｔ  ｓｅｑ、ａｃｋ、ＲＴＴおよびＷＳの項目を含む。
【００９３】
Ｎｏ．の項目には、レコードを識別する番号が登録される。ＴＩＭＥの項目には、該当のレコードに対応するパケットを受信した時刻が登録される。例えば、ＴＩＭＥの項目には、年月日日時分秒の情報が登録されてもよい。ＳＡの項目には、送信元ＩＰアドレスが登録される。ＳＰの項目には、送信元ポート番号が登録される。ＤＡの項目には、宛先ＩＰアドレスが登録される。ＤＰの項目には、宛先ポート番号が登録される。Ｐｒｏｔｏｃｏｌの項目には、プロトコルの種別（例えば、ＴＣＰなど）が登録される。ＴＣＰ  ＬＥＮの項目には、ＴＣＰペイロードサイズが登録される。ＩＰ  ＬＥＮの項目には、ＩＰパケットのサイズが登録される。ｓｅｑの項目には、シーケンス番号が登録される。ｎｅｘｔ  ｓｅｑの項目には、ネクストシーケンス番号が登録される。ネクストシーケンス番号は、シーケンス番号にＴＣＰペイロードサイズを加算した値となる。ａｃｋの項目には、ＡＣＫ番号が登録される。ＲＴＴの項目には、ＲＴＴの計算結果が登録される。ＷＳの項目には、ウィンドウサイズが登録される。なお、パケットテーブル１１１のうち、設定なしの欄には、ハイフン記号“−”を表記している。
【００９４】
ここで、ＩＰアドレス“ＩＰ１”は、サーバ２００のＩＰアドレスである。ＩＰアドレス“ＩＰ２”は、端末装置３００のＩＰアドレスである。ポート番号“ａ”は、サーバ２００が端末装置３００との通信に用いるポート番号である。ポート番号“ｂ”は、端末装置３００がサーバ２００との通信に用いるポート番号である。
【００９５】
例えば、パケットテーブル１１１には、Ｎｏ．“９”、ＴＩＭＥ“１３：２０：０１．３１７４６５”、ＳＡ“ＩＰ１”、ＳＰ“ａ”、ＤＡ“ＩＰ２”、ＤＰ“ｂ”、Ｐｒｏｔｏｃｏｌ“ＴＣＰ”、ＴＣＰ  ＬＥＮ“１３９４”、ＩＰ  ＬＥＮ“１４３４”、ｓｅｑ“４１８３”、ｎｅｘｔ  ｓｅｑ“５５７７”、ａｃｋ“４７９”、ＲＴＴ“−”、ＷＳ“１５７４４”という情報が登録される。このレコードは、サーバ２００から端末装置３００に対して送信されたＤＡＴＡパケットに関する情報である。
【００９６】
また、パケットテーブル１１１には、Ｎｏ．“１２”、ＴＩＭＥ“１３：２０：０１．３１４４９２”、ＳＡ“ＩＰ２”、ＳＰ“ｂ”、ＤＡ“ＩＰ１”、ＤＰ“ａ”、Ｐｒｏｔｏｃｏｌ“ＴＣＰ”、ＴＣＰ  ＬＥＮ“０”、ＩＰ  ＬＥＮ“４０”、ｓｅｑ“４７９”、ｎｅｘｔ  ｓｅｑ“−”、ａｃｋ“１３９５”、ＲＴＴ“０．０５３５４”、ＷＳ“１７５３６”という情報が登録される。このレコードは、端末装置３００からサーバ２００に対して送信されたＡＣＫパケットに関する情報である。
【００９７】
図１３は、パケットテーブルの例（続き）を示す図である。このように、記録部１４１，１５１は、ＤＡＴＡパケットおよびＡＣＫパケットの情報を、パケットテーブル１１１に記録する。ここで、以下の説明では、パケットテーブル１１１において、Ｎｏ．“Ｘ”（Ｘは任意の番号）のレコードで示されるパケットを指して、単に、Ｎｏ．Ｘのパケットというように表記することがある。
【００９８】
パケットテーブル１１１の例によれば、Ｎｏ．３２のＡＣＫパケットに対応するＤＡＴＡパケットは、Ｎｏ．１５のＤＡＴＡパケットであることが分かる。なぜなら、Ｎｏ．３２のＡＣＫパケットのＡＣＫ番号“１１１５３”が、Ｎｏ．１５のＤＡＴＡパケットのネクストシーケンス番号“１１１５３”（＝当該ＤＡＴＡパケットのシーケンス番号“９７５９”＋ＴＣＰペイロードサイズ“１３９４”）に一致するからである。
【００９９】
また、Ｎｏ．３２のＡＣＫパケットは、Ｎｏ．１５の１つのＤＡＴＡパケットに対して応答されたものであることが分かる。なぜなら、Ｎｏ．３２のＡＣＫパケットのＡＣＫ番号“１１１５３”と、Ｎｏ．３２のＡＣＫパケットよりも１つ前に受信したＮｏ．３０のＡＣＫパケットのＡＣＫ番号“９７５９”との差“１１１５３−９７５９＝１３９４”が、Ｎｏ．１５のＤＡＴＡパケットのＴＣＰペイロードサイズ“１３９４”に一致するからである。
【０１００】
同様にして、あるＡＣＫパケットが複数のＤＡＴＡパケットに対して応答されたものであることも判定できる。具体的には、着目するＡＣＫパケットのＡＣＫ番号と、当該ＡＣＫパケットよりも１つ前のＡＣＫパケットのＡＣＫ番号との差が、１つ前のＡＣＫパケットに対応するＤＡＴＡパケットよりも後で、着目するＡＣＫパケットに対応するＤＡＴＡパケットまでの複数個のＤＡＴＡパケットのＴＣＰペイロードサイズの合計に一致していれば、着目するＡＣＫパケットは複数個のＤＡＴＡパケットに対して応答されたものであると判定できる。より具体的には、例えば、一連のＤＡＴＡパケットのＴＣＰペイロードサイズが“１３９４”である場合を考える。この場合、着目するＡＣＫパケットのＡＣＫ番号と、当該ＡＣＫパケットよりも１つ前のＡＣＫパケットのＡＣＫ番号との差が、“１３９４”のＮ倍（Ｎは２以上の整数）であれば、着目するＡＣＫパケットは、遅延ＡＣＫによりＮ個のＤＡＴＡパケットに対して応答されたものであると判定できる。
【０１０１】
更に、パケットテーブル１１１の例によれば、Ｎｏ．３２のＡＣＫパケットにおけるウィンドウサイズ“３８０１６”は、１つ前に受信したＮｏ．３０のＡＣＫパケットのウィンドウサイズ“３５０７２”より大きいことも分かる。
【０１０２】
図１４は、出力例を示す図である。例えば、ＲＴＴ算出部１６０は、１つのコネクションに対して１分間に計測したＲＴＴの平均値を、ＲＴＴの計測結果として出力する。ＲＴＴ算出部１６０は、図１４の内容をディスプレイ１２に表示させてもよい。ここで、図１４の出力例において、各行の左側に付した番号は行番号である。
【０１０３】
例えば、１行目は、出力日時“２０１３／７／１６  １３：２１：００”である。２行目は、サーバ２００のＩＰアドレス“ＩＰ１”である。３行目は、サーバ２００が端末装置３００との通信に用いるポート番号“ａ”である。４行目は、端末装置３００のＩＰアドレス“ＩＰ２”である。５行目は、端末装置３００がサーバ２００との通信に用いるポート番号“ｂ”である。６行目は、通信の開始日時“２０１３／７／１６  １３：２０：００”である。７行目は、通信の終了日時“２０１３／７／１６／  １３：２０：５９”である。図１４の出力例によれば、ＲＴＴを得るための計測を２０１３年７月１６日１３時２０分００秒から２０１３年７月１６日１３時２０分５９秒の１分間に行ったことになる。
【０１０４】
８行目は、サーバ２００が端末装置３００に送信したＤＡＴＡパケットに関するＲＴＴの計測回数“２２１”である。９行目は、サーバ２００が端末装置３００に送信したＤＡＴＡパケットに関するＲＴＴの平均値“１１８３８７”である。ここで、図１４の出力例では、ＲＴＴの単位はマイクロ秒である。１０行目は、サーバ２００が端末装置３００に送信したＲＴＴの標準偏差“５０２０２”である。１１行目は、サーバ２００が端末装置３００に送信したＲＴＴの最小値“３７０７０”である。１２行目は、サーバ２００が端末装置３００に送信したＲＴＴの最大値“２５４７９６”である。
【０１０５】
１３行目は、端末装置３００がサーバ２００に送信したＤＡＴＡパケットに関するＲＴＴの計測回数“２”である。１４行目は、端末装置３００がサーバ２００に送信したＤＡＴＡパケットに関するＲＴＴの平均値“３４”である。１５行目は、端末装置３００がサーバ２００に送信したＤＡＴＡパケットに関するＲＴＴの標準偏差“２”である。１６行目は、端末装置３００がサーバ２００に送信したＤＡＴＡパケットに関するＲＴＴの最小値“３２”である。１７行目は、端末装置３００がサーバ２００に送信したＤＡＴＡパケットに関するＲＴＴの最大値“３６”である。
【０１０６】
１分間に複数回計測されたＲＴＴの平均を、ＲＴＴの計測結果として出力する例を示したが、ユーザは、平均化する単位を任意に決定可能である。例えば、ＲＴＴ算出部１６０は、５分間や１０分間など他の期間内に複数回計測されたＲＴＴの平均を、ＲＴＴの計測結果として出力してもよい。ＲＴＴ算出部１６０は、１つのＡＣＫパケットを単位にＲＴＴを出力してもよいし、所定数回計測されたＲＴＴの平均を、ＲＴＴの計測結果として出力してもよい。
【０１０７】
次に、計測装置１００によるＲＴＴの計測の手順を説明する。
図１５は、ＲＴＴの計測例を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。
【０１０８】
（Ｓ１１）受信部１２０は、タップ１１からパケットを受信する。
（Ｓ１２）分類部１３０は、受信したパケットに含まれるＩＰヘッダのプロトコルフィールドを参照して、受信したパケットのプロトコルの種別がＴＣＰであるか否かを判定する。ＴＣＰである場合、処理をステップＳ１３に進める。ＴＣＰでない場合、処理をステップＳ１１に進める（受信したパケットを破棄してもよい）。ＩＰヘッダのプロトコルフィールドが“６”であれば、ＴＣＰである。
【０１０９】
（Ｓ１３）分類部１３０は、受信したパケットをコネクション毎に分類する。具体的には、送信元／宛先ＩＰアドレスと送信元／宛先ポート番号との組が同じであるパケット同士が同一コネクションのパケットである。
【０１１０】
（Ｓ１４）分類部１３０は、受信したパケットがＤＡＴＡパケットであるか否かを判定する。ＤＡＴＡパケットである場合、処理をステップＳ１５に進める。ＤＡＴＡパケットでない場合、処理をステップＳ１６に進める。具体的には、分類部１３０は、受信したパケットにおけるＴＣＰペイロードサイズが０でないときにＤＡＴＡパケットであると判定する。
【０１１１】
（Ｓ１５）記録部１４１は、受信したＤＡＴＡパケットの情報をパケットテーブル１１１に記録する。前述のように、記録されるＤＡＴＡパケットの情報は、受信時刻、シーケンス番号、ＴＣＰペイロードサイズなどの情報を含む。そして、処理をステップＳ１１に進める。
【０１１２】
（Ｓ１６）分類部１３０は、受信したパケットがＡＣＫパケットであるか否かを判定する。ＡＣＫパケットである場合、処理をステップＳ１７に進める。ＡＣＫパケットでない場合、処理をステップＳ１１に進める（受信したパケットを破棄してもよい）。例えば、分類部１３０は、ＴＣＰヘッダのＡＣＫフラグがオンであり、かつ、ＴＣＰペイロードサイズが０であるパケットをＡＣＫパケットであると判定する。
【０１１３】
（Ｓ１７）記録部１５１は、受信したＡＣＫパケットの情報をパケットテーブル１１１に記録する。前述のように、記録されるＡＣＫパケットの情報は、受信時刻、ＡＣＫ番号、ウィンドウサイズの情報を含む。そして、処理をステップＳ１８に進める。なお、記録部１４１，１５１は、ステップＳ１３で分類されたコネクション毎に個別にパケットテーブルを作成してもよい。
【０１１４】
（Ｓ１８）解析部１５２は、今回受信した１つのＡＣＫパケットが、遅延ＡＣＫにより複数のＤＡＴＡパケットに対して応答されたもの（複数ＤＡＴＡ−１ＡＣＫ）であるか否かを判定する。複数ＤＡＴＡ−１ＡＣＫのＡＣＫパケットである場合、処理をステップＳ２０に進める。複数ＤＡＴＡ−１ＡＣＫのＡＣＫパケットでない、すなわち、今回受信した１つのＡＣＫパケットが１つのＤＡＴＡパケットに対して応答されたもの（１ＤＡＴＡ−１ＡＣＫ）である場合、処理をステップＳ１９に進める。解析部１５２は、図１３で例示したように、パケットテーブル１１１に記録された情報に基づいて、ステップＳ１８の判定を行える。具体的には、解析部１５２は、今回受信したＡＣＫパケットのＡＣＫ番号と１つ前のＡＣＫパケットのＡＣＫ番号との差、および、両ＡＣＫパケットの間に受信されたＤＡＴＡパケットのＴＣＰペイロードサイズとを比較する。ＡＣＫ番号の差がＴＣＰペイロードサイズに等しければ、１ＤＡＴＡ−１ＡＣＫのＡＣＫパケットである。ＡＣＫ番号の差がＴＣＰペイロードサイズのＮ倍（Ｎは２以上の整数）であれば、複数ＤＡＴＡ−１ＡＣＫのＡＣＫパケットである。
【０１１５】
（Ｓ１９）ＷＳ比較部１５３は、今回受信したＡＣＫパケット（現在のＡＣＫパケット）のウィンドウサイズ（ＷＳ）が、１つ前のＡＣＫパケットのウィンドウサイズ（ＷＳ）以上か否かを判定する。現ＡＣＫパケットのＷＳが１つ前のＡＣＫパケットのＷＳ以上の場合、今回受信したＡＣＫパケットをＲＴＴの計算に利用すると決定し、処理をステップＳ２０に進める。現ＡＣＫパケットのＷＳが１つ前のＡＣＰパケットのＷＳ未満の場合、今回受信したＡＣＫパケットをＲＴＴの計算に利用しないと決定し、処理をステップＳ１１に進める。ＷＳ比較部１５３は、図１３で例示したように、パケットテーブル１１１に記録された、今回受信したＡＣＫパケットのウィンドウサイズと１つ前のＡＣＫパケットのウィンドウサイズとを比較することで、ステップＳ１９の判定を行える。
【０１１６】
（Ｓ２０）ＲＴＴ算出部１６０は、今回受信したＡＣＫパケットを用いてＲＴＴを計算する。ステップＳ１８により、遅延ＡＣＫによる複数ＤＡＴＡ−１ＡＣＫのＡＣＫパケットであると判定されている場合、該当の複数のＤＡＴＡパケットのうち、最後のＤＡＴＡパケットの受信時刻と今回のＡＣＫパケットの受信時刻との差をＲＴＴとする。この方法について、例えば、前述の特開２００９−３０３０８９号公報が参考になる。例えば、２ＤＡＴＡ−１ＡＣＫのＡＣＫパケット（２つのＤＡＴＡパケットに対して応答された１つのＡＣＫパケット）であれば、２番目のＤＡＴＡパケットの受信時刻と当該ＡＣＫパケットの受信時刻との差をＲＴＴとする。ステップＳ１８，Ｓ１９により、１ＤＡＴＡ−１ＡＣＫのＡＣＫパケットであり、かつ、ウィンドウサイズが１つ前のＡＣＫパケットのウィンドウサイズ以上と判定されている場合、今回のＡＣＫパケットの受信時刻と、当該ＡＣＫパケットに対応するＤＡＴＡパケットの受信時刻との差をＲＴＴとする。ＲＴＴ算出部１６０は、今回受信したＡＣＫパケットの受信時刻に対応付けて、計算したＲＴＴをパケットテーブル１１１に登録する（当該ＡＣＫパケットのレコードにＲＴＴの計測値が登録される）。ＲＴＴ算出部１６０は、今回受信したＡＣＫパケットを用いて計算したＲＴＴを、ディスプレイ１２に出力してもよい。すなわち、ＲＴＴ算出部１６０は、ディスプレイ１２に当該ＲＴＴを表示させることで、今回計算したＲＴＴをユーザに提示してもよい。
【０１１７】
（Ｓ２１）ＲＴＴ算出部１６０は、ＲＴＴの集計期間が終了したか否かを判定する。集計期間が終了した場合、処理を終了する。集計期間が終了していない場合、処理をステップＳ１１に進める。ＲＴＴ算出部１６０は、パケットテーブル１１１に記録されたＲＴＴに基づいて、集計期間におけるＲＴＴの計測結果を出力する。例えば、１分間に複数回計測したＲＴＴの平均を計測結果として出力してもよい。この場合、例えば、５分間計測したのであれば、最初の１分間、次の１分間、・・・というように、ＲＴＴの５つの平均値を計測結果として出力する。ＲＴＴ算出部１６０は、例えば図１４で例示した内容を、ユーザが特定のアプリケーションを用いて参照可能なデータとして、記憶部１１０に出力してもよい。あるいは、ＲＴＴ算出部１６０は、ディスプレイ１２に当該内容を出力して表示させてもよい。
【０１１８】
ここで、計測装置１００は、ＲＴＴの計測を開始する旨のユーザによる入力を受け付けて、図１５の手順を開始してもよい。その際、計測装置１００は、監視対象とするコネクションを指定する情報を当該入力とともに受け付けてもよい。その場合、ステップＳ２０において、ＲＴＴ算出部１６０は、指定されたコネクションに対してＲＴＴが算出されることになる。また、ステップＳ２１において、ＲＴＴ算出部１６０は、指定されたコネクションが終了した場合に、ＲＴＴの集計期間が終了したと判定してもよい。
【０１１９】
更に、ステップＳ１９では、ＲＴＴ算出部１６０は、現在のＡＣＫパケットのウィンドウサイズ（現ＷＳ）が１つ前のＡＣＫパケットのウィンドウサイズ（１つ前のＷＳ）よりも大きいときに現ＡＣＫパケットをＲＴＴの計算対象とし、現ＷＳが１つ前のＷＳ以下のときにＲＴＴの計算対象としないと判定してもよい。
【０１２０】
図１６は、ＲＴＴの計測結果の例を示す図である。パケットテーブル１１１にＲＴＴの計算結果が登録されることは、図１２，図１３でも例示した。パケットテーブル１１１ａは、パケットテーブル１１１のうちＲＴＴの計算に利用されたＡＣＫパケットのレコードを抜粋して例示している。また、パケットテーブル１１１ａには、ＡＣＫ差の項目を追記している。ＡＣＫ差は、１つ前のＡＣＫパケットとのＡＣＫ番号の差を示す。
【０１２１】
例えば、Ｎｏ．３０のＡＣＫパケットのレコードには、ＲＴＴの項目に“０．０３９７８”秒という情報が登録されている。これは、パケットテーブル１１１におけるＮｏ．１４のＤＡＴＡパケットの受信時刻“１３：２０：０１．３１４５９８”と、Ｎｏ．３０のＡＣＫパケットの受信時刻“１３：２０：０１．３５４３８０”との時間差である。ただし、ＲＴＴは、小数点第６位で四捨五入した結果である（以下も同様）。
【０１２２】
Ｎｏ．３２のＡＣＫパケットのレコードには、ＲＴＴの項目に“０．０４８７７”秒という情報が登録されている。これは、パケットテーブル１１１におけるＮｏ．１５のＤＡＴＡパケットの受信時刻“１３：２０：０１．３１４６１２”と、Ｎｏ．３２のＡＣＫパケットの受信時刻“１３：２０：０１．３６３３８５”との時間差である。
【０１２３】
Ｎｏ．３３のＡＣＫパケットのレコードには、ＲＴＴの項目に“０．０４８７９”秒という情報が登録されている。これは、パケットテーブル１１１におけるＮｏ．１６のＤＡＴＡパケットの受信時刻“１３：２０：０１．３１４６１８”と、Ｎｏ．３３のＡＣＫパケットの受信時刻“１３：２０：０１．３６３４０３”との時間差である。
【０１２４】
それ以外のＮｏ．４４までの各ＡＣＫパケットのレコードも同様にＲＴＴの値が登録されている。ここで、パケットテーブル１１１ａにおける、Ｎｏ．２３，２４，３０，・・・，４４の各ＡＣＫパケットのレコードでは、ＡＣＫ差が何れも“１３９４”である。ＡＣＫ差“１３９４”は、ＤＡＴＡパケットにおけるＴＣＰペイロードサイズの１倍に一致する。したがって、Ｎｏ．２３，２４，３０，・・・，４４の各ＡＣＫパケットは、１つのＤＡＴＡパケットに対して応答されたＡＣＫパケットである。
【０１２５】
一方、パケットテーブル１１１ａで例示されるＮｏ．５１７，５４８，５５２，・・・，５５９のＡＣＫパケットのレコードでは、ＡＣＫ差が何れも“２７８８”である。ＡＣＫ差“２７８８”は、ＤＡＴＡパケットにおけるＴＣＰペイロードサイズの２倍に一致する。したがって、Ｎｏ．５１７，５４８，５５２，・・・，５５９の各ＡＣＫパケットは、２つのＤＡＴＡパケットに対して応答された１つのＡＣＫパケットである。計測装置１００は、図１５のステップＳ２０で例示した方法により、２つのＤＡＴＡパケットに対して応答された１つのＡＣＫパケットを用いてＲＴＴを計測可能である。
【０１２６】
このようにして、計測装置１００は、１つのＤＡＴＡパケットに対して応答された１つのＡＣＫパケットを抽出し、そのうち遅延ＡＣＫによるものではないＡＣＫパケットを選別して、ＲＴＴを計算する。また、複数のＤＡＴＡパケットに対して応答された１つのＡＣＫパケットを特定した場合には、当該複数のＤＡＴＡパケットのうち最後のＤＡＴＡパケットと、当該ＡＣＫパケットとの受信時刻によりＲＴＴを計算する。
【０１２７】
これにより、サーバ２００と端末装置３００との通信において、遅延ＡＣＫが使用されない期間（図１１の期間Ｔ１）、および、遅延ＡＣＫが使用される期間（図１１の期間Ｔ２）の両方に対して、遅延ＡＣＫのタイムアウトの影響を軽減してＲＴＴの計測を行える。例えば、特開２００９−３０３０８９号公報の方法のみでは、ＲＴＴの計測機会が期間Ｔ２のみに限られてしまい、ＲＴＴの計測機会が減少してしまう。一方、計測装置１００によれば、ＲＴＴの計測機会を増やせる。よって、ＲＴＴの変動などを各期間において詳細に把握することが可能となる。また、計測機会が増えることで、計測されるＲＴＴのサンプル数も増えるので、ＲＴＴの計測に対する統計的な精度を向上させることができる。
【０１２８】
上記の説明では、主に、サーバ２００と端末装置３００との通信におけるＲＴＴの計測を例示した。一方、端末装置４００も、ＡＣＫ応答の制御において端末装置３００と同様の挙動が見られる場合も、計測装置１００の機能を用いることができる。すなわち、端末装置４００も遅延ＡＣＫ非利用期間と遅延ＡＣＫ利用期間があり、遅延ＡＣＫ非利用期間でウィンドウサイズを大きくしていく場合は、計測装置１００によりＲＴＴ算出用のＡＣＫパケットを抽出することで、ＲＴＴの計測機会の減少を抑えられる。
【０１２９】
なお、第１の実施の形態の情報処理は、演算部１ｃにプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、プロセッサ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体１４に記録できる。
【０１３０】
例えば、プログラムを記録した記録媒体１４を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体１４に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【０１３１】
以上の第１，第２の実施の形態を含む実施形態に関し、更に以下の付記を開示する。
（付記１）  送信元装置から宛先装置へ送られたデータパケットに含まれるシーケンス番号、前記データパケットのサイズおよび前記データパケットを受信した時刻を対応付けて記憶する第１記憶部と、
前記宛先装置から前記送信元装置へ返されたＡＣＫパケットのＡＣＫ番号、ウィンドウサイズおよび前記ＡＣＫパケットを受信した時刻を対応付けて記憶する第２記憶部と、
前記第１記億部と前記第２記憶部を参照し、第１ＡＣＫパケットが１つの第１データパケットに対応するＡＣＫパケットであるときに、前記第１ＡＣＫパケットに含まれるウィンドウサイズと前記第１ＡＣＫパケットの直前に取得した第２ＡＣＫパケットのウィンドウサイズとに基づいて、前記第１ＡＣＫパケットの受信時刻で往復遅延時間を算出可能か否かを判定し、算出可能な場合、当該受信時刻により算出された往復遅延時間を出力する演算部と、
を有するパケット抽出装置。
【０１３２】
（付記２）  前記演算部は、前記第１ＡＣＫパケットに含まれるウィンドウサイズが前記第２ＡＣＫパケットに含まれるウィンドウサイズ以上の場合に、前記第１ＡＣＫパケットの受信時刻で往復遅延時間を算出可能と判定する、付記１記載のパケット抽出装置。
【０１３３】
（付記３）  前記演算部は、シーケンス番号にサイズを加算した値が前記第１ＡＣＫパケットのＡＣＫ番号に一致するデータパケットを前記第１データパケットと判定し、前記第１データパケットのシーケンス番号に一致するＡＣＫ番号の前記第２ＡＣＫパケットがある場合、前記第１ＡＣＫパケットが１つの前記第１データパケットに対応するＡＣＫパケットであると判定する、付記１または２記載のパケット抽出装置。
【０１３４】
（付記４）  前記演算部は、前記第１ＡＣＫパケットよりも前に受信したＡＣＫパケットのうち、前記第１ＡＣＫパケットとの前記ＡＣＫ番号の差が、前記第１データパケットのサイズに一致するＡＣＫパケットを前記第２ＡＣＫパケットと特定する、付記１乃至３の何れか１つに記載のパケット抽出装置。
【０１３５】
（付記５）  前記演算部は、前記第１データパケットの受信時刻と前記第１ＡＣＫパケットの受信時刻とに基づいて、往復遅延時間を算出する、付記１乃至４の何れか１つに記載のパケット抽出装置。
【０１３６】
（付記６）  前記演算部は、前記第１ＡＣＫパケットが複数のデータパケットに対して応答されたＡＣＫパケットであるときは、ウィンドウサイズに関わらず前記第１ＡＣＫパケットの受信時刻により算出された往復遅延時間を出力する、付記１乃至５の何れか１つに記載のパケット抽出装置。
【０１３７】
（付記７）  前記送信元装置は、有線ネットワークに接続され、
前記宛先装置は、前記有線ネットワークに接続されたアクセスポイントと無線通信し、前記アクセスポイントを介して前記送信元装置と通信し、
前記第１および前記第２記憶部に記憶される前記データパケットおよび前記ＡＣＫパケットの情報は、前記有線ネットワークで収集された情報である、
付記１乃至６の何れか１つに記載のパケット抽出装置。
【０１３８】
（付記８）  コンピュータに、
送信元装置から宛先装置へ送られるデータパケットを受信し、受信した前記データパケットに含まれるシーケンス番号、前記データパケットのサイズおよび受信時刻を対応付けて第１記憶部に蓄積し、
前記宛先装置から前記送信元装置へ返されるＡＣＫパケットを受信し、受信した前記ＡＣＫパケットのＡＣＫ番号、ウィンドウサイズおよび受信時刻を対応付けて第２記憶部に蓄積し、
受信した第１ＡＣＫパケットが１つの第１データパケットに対応するＡＣＫパケットであるときに、前記第１ＡＣＫパケットに含まれるウィンドウサイズと前記第１ＡＣＫパケットの直前に取得した第２ＡＣＫパケットのウィンドウサイズとに基づいて、前記第１ＡＣＫパケットの受信時刻で往復遅延時間を算出可能か否かを判定し、算出可能な場合、当該受信時刻により算出された往復遅延時間を出力する、
処理を実行させるパケット抽出プログラム。
【０１３９】
（付記９）  コンピュータが、
送信元装置から宛先装置へ送られるデータパケットを受信し、受信した前記データパケットに含まれるシーケンス番号、前記データパケットのサイズおよび受信時刻を対応付けて第１記憶部に蓄積し、
前記宛先装置から前記送信元装置へ返されるＡＣＫパケットを受信し、受信した前記ＡＣＫパケットのＡＣＫ番号、ウィンドウサイズおよび受信時刻を対応付けて第２記憶部に蓄積し、
受信した第１ＡＣＫパケットが１つの第１データパケットに対応するＡＣＫパケットであるときに、前記第１ＡＣＫパケットに含まれるウィンドウサイズと前記第１ＡＣＫパケットの直前に取得した第２ＡＣＫパケットのウィンドウサイズとに基づいて、前記第１ＡＣＫパケットの受信時刻で往復遅延時間を算出可能か否かを判定し、算出可能な場合、当該受信時刻により算出された往復遅延時間を出力する、
パケット抽出方法。
【符号の説明】
【０１４０】
１  パケット抽出装置
１ａ，１ｂ  記憶部
１ｃ  演算部
２  送信元装置
３  宛先装置
４  アクセスポイント
５  ネットワーク
６，７  データパケット
８，９  ＡＣＫパケット
【図１】
0006455135.tif 000002
【図２】
0006455135.tif 000003
【図３】
0006455135.tif 000004
【図４】
0006455135.tif 000005
【図５】
0006455135.tif 000006
【図６】
0006455135.tif 000007
【図７】
0006455135.tif 000008
【図８】
0006455135.tif 000009
【図９】
0006455135.tif 000010
【図１０】
0006455135.tif 000011
【図１１】
0006455135.tif 000012
【図１２】
0006455135.tif 000013
【図１３】
0006455135.tif 000014
【図１４】
0006455135.tif 000015
【図１５】
0006455135.tif 000016
【図１６】
0006455135.tif 000017