(57)【特許請求の範囲】
【請求項１】
データ送信から該データ送信に対する応答があるまでの遅延時間を計測する遅延時間計測装置であって、
送信元装置から宛先装置に送られるデータパケットを受信して、受信した前記データパケットのシーケンス番号、データ長および受信時刻を対応付けて記憶手段に格納し、前記宛先装置から前記送信元装置に返されるＡＣＫパケットを受信して、受信した前記ＡＣＫパケットのＡＣＫ番号および受信時刻を対応付けて前記記憶手段に格納する格納制御手段と、
前記送信元装置から前記宛先装置に送信される第１のデータパケットに対するＡＣＫパケットを待たずに前記送信元装置から前記宛先装置に前記第１のデータパケットのあとに送信される第２のデータパケットに対応するシーケンス番号と、前記第２のデータパケットに対するＡＣＫパケットに対応するＡＣＫ番号とを前記記憶手段から検出し、検出されたシーケンス番号に対応付けて格納された受信時刻と検出された前記ＡＣＫ番号に対応付けて格納された受信時刻とに基づいて前記遅延時間を計算する計算手段と、
を有する遅延時間計測装置。
【請求項２】
前記ＡＣＫ番号は、前記データパケットのシーケンス番号に該データパケットのデータ長を加算した値である、
ことを特徴とする請求項１記載の遅延時間計測装置。
【請求項３】
前記計算手段は、前記第２のシーケンス番号に対応付けて格納された受信時刻と、取得された前記ＡＣＫ番号に対応付けて格納された受信時刻との差を前記遅延時間とすることを特徴とする請求項１または２記載の遅延時間計測装置。
【請求項４】
前記計算手段は、前記第１のデータパケットに対するＡＣＫパケットを示すＡＣＫ番号が前記記憶手段に格納されていない場合、シーケンス番号が前記第１のデータパケットの第１のシーケンス番号に前記第１のシーケンス番号に対応付けて格納されたデータ長を加算した値であるデータパケットを、前記第２のデータパケットと判断することを特徴とする請求項１乃至３のいずれか１項に記載の遅延時間計測装置。
【請求項５】
前記格納制御手段は、前記送信元装置と前記宛先装置との間の通信経路上から分岐された通信経路を介して前記データパケットを受信する請求項１乃至４のいずれか１項に記載の遅延時間計測装置。
【請求項６】
前記格納制御手段において、前記送信元装置から前記宛先装置に送られるデータパケットの受信に替えて、前記データパケットの各種情報を記録したファイル、あるいはデータ記憶装置からデータを入力することを特徴とした請求項１乃至５のいずれか１項に記載の遅延時間計測装置。
【請求項７】
データ送信から該データ送信に対する応答があるまでの遅延時間を計測する処理をコンピュータに実行させるための遅延時間計測プログラムであって、
前記コンピュータを、
送信元装置から宛先装置に送られるデータパケットを受信して、受信した前記データパケットのシーケンス番号、データ長および受信時刻を対応付けて記憶手段に格納し、前記宛先装置から前記送信元装置に返されるＡＣＫパケットを受信して、受信した前記ＡＣＫパケットのＡＣＫ番号および受信時刻を対応付けて前記記憶手段に格納する格納制御手段、
前記送信元装置から前記宛先装置に送信される第１のデータパケットに対するＡＣＫパケットを待たずに前記送信元装置から前記宛先装置に前記第１のデータパケットのあとに送信される第２のデータパケットに対応するシーケンス番号と、前記第２のデータパケットに対するＡＣＫパケットに対応するＡＣＫ番号とを前記記憶手段から検出し、検出されたシーケンス番号に対応付けて格納された受信時刻と検出された前記ＡＣＫ番号に対応付けて格納された受信時刻とに基づいて前記遅延時間を計算する計算手段、
として機能させる遅延時間計測プログラム。
【請求項８】
データ送信から該データ送信に対する応答があるまでの遅延時間を計測する処理をコンピュータで行うための遅延時間計測方法であって、
前記コンピュータが、
送信元装置から宛先装置に送られるデータパケットを受信して、受信した前記データパケットのシーケンス番号、データ長および受信時刻を対応付けて記憶手段に格納し、前記宛先装置から前記送信元装置に返されるＡＣＫパケットを受信して、受信した前記ＡＣＫパケットのＡＣＫ番号および受信時刻を対応付けて前記記憶手段に格納し、
前記送信元装置から前記宛先装置に送信される第１のデータパケットに対するＡＣＫパケットを待たずに前記送信元装置から前記宛先装置に前記第１のデータパケットのあとに送信される第２のデータパケットに対応するシーケンス番号と、前記第２のデータパケットに対するＡＣＫパケットに対応するＡＣＫ番号とを前記記憶手段から検出し、検出されたシーケンス番号に対応付けて格納された受信時刻と検出された前記ＡＣＫ番号に対応付けて格納された受信時刻とに基づいて前記遅延時間を計算する、
ことを特徴とする遅延時間計測方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ送信から確認応答があるまでの往復遅延時間を計測する遅延時間計測装置、遅延時間計測プログラム、および遅延時間計測方法に関し、特に遅延確認応答が行われる場合の往復遅延時間を計測する遅延時間計測装置、遅延時間計測プログラム、および遅延時間計測方法に関する。
【背景技術】
【０００２】
ネットワークを介したデータ通信のプロトコルには、データを受信した装置から確認応答を返すものがある。そのような通信プロトコルの１つにＴＣＰ／ＩＰ（Transmission Control Protocol／Internet Protocol）がある。ＴＣＰ／ＩＰでは、ネットワーク層のプロトコルはＩＰであり、トランスポート層のプロトコルはＴＣＰまたはＵＤＰ（User Datagram Protocol）である。ここで、トランスポート層のプロトコルとしてＴＣＰを用いたときに、受信したデータの確認応答が行われる。ＴＣＰでは、送信したパケットに対して必ず確認のための応答を送信することによって信頼性のある通信を実現している。
【０００３】
図１８は、ＴＣＰにおけるパケット送受信の基本動作例を示す図である。図１８には、送信元ホスト９１１から送信されたデータに対する確認応答を宛先ホスト９１２が返す例が示されている。
【０００４】
まず、送信元ホスト９１１は、送信対象のデータをＴＣＰパケットに載せ（送信対象のデータにＴＣＰヘッダを付加する）、それをＩＰパケットに載せて宛先ホスト９１２に送信する。ＩＰパケットを受信した宛先ホスト９１２では、ＩＰパケットからＴＣＰパケットを取り出し、さらにＴＣＰパケットからデータを取り出す。この際、宛先ホスト９１２は、取り出したデータを上位アプリケーションに届けると共に、送信元ホスト９１１に対して自動的に確認応答を返信する。確認応答の返信は、上位アプリケーションの指示とは関係なく、ＴＣＰのプロトコル・スタック内で自動的に行われる。
【０００５】
この確認応答のことをＴＣＰでは“Acknowledge（承認）”と呼ぶ（以下ではＡＣＫと略記する）。ＴＣＰのパケットを受信した側では、データを受け取ったことを表すため、ＡＣＫを返送する。送信元ホスト９１１では、このＡＣＫを受け取ることでデータ送信が完了したと認識し、次の動作に移る。一方、送信元ホスト９１１は、しばらく待ってもＡＣＫが受信できなければ、送信が失敗したものとみなしデータの再送動作を行う。
【０００６】
このように、データ送信が行われるとＡＣＫが返される。そこで、ネットワーク上でのＴＣＰによるデータ送信とＡＣＫとの通信パケットを監視することで、データの往復遅延時間（ＲＴＴ: Round Trip Time）を計測することができる。つまりデータを送信し、そのデータを受信した証にＡＣＫを送り返されるので、その間の時間を計測すれば、それがＲＴＴとなる。ＲＴＴを計測することで、ネットワークの品質などを把握することができる。
【０００７】
なお、図１８に示したような基本動作では、送信元ホスト９１１は、送信データに対する宛先ホスト９１２からのＡＣＫを受け取ってから、次のデータ送信を行う。すると、データ送信間隔があいてしまい、データ送信効率が低下する。そこで、送信元ホスト９１１においてＡＣＫを待たずに連続してデータを送信することが行われる。送信元ホスト９１１がＡＣＫを待たずに送信できるデータの大きさは、ウィンドウサイズと呼ばれる。送信元ホスト９１１が宛先ホスト９１２に送信する場合のウィンドウサイズは、宛先ホスト９１２から送信元ホスト９１１に通知される。
【０００８】
また、データを受信した宛先ホスト９１２がすぐにＡＣＫを返すとウィンドウサイズとして小さな値を指定することがある。これは受信したばかりのデータで受信用のバッファがいっぱいになってしまうためである。小さなウィンドウサイズを通知された送信元ホスト９１１がその大きさでデータを送り、ＡＣＫの受信を待つとネットワークの利用効率が悪くなる。そこで、宛先ホスト９１２ではデータを受信してもすぐにＡＣＫを返さずに、所定の時間待ってからＡＣＫを返す方法が採られる。これを遅延確認応答という。
【０００９】
具体的には、遅延確認応答では以下のような処理をしている。
・データを２回受信するまで確認応答をしない（第１のパターン）。
・そうでない場合は確認応答を最大で０．５秒間遅延させる（第２のパターン）。
【００１０】
なお、第２のパターンで遅延させたＡＣＫのことをDelayed ＡＣＫと呼ぶ。また、第１のパターンでは、２つのデータに対して１つのＡＣＫを返すこととなる。これは、ＡＣＫは送信された全てのデータについて返ってこなくてもよいという既定を利用している。すなわち、ＡＣＫには、次に送信元ホスト９１１が送信することを期待するデータのシーケンス番号が含まれている。送信元ホスト９１１では、ＡＣＫに示されるシーケンス番号によって、そのシーケンス番号より前のすべてのデータが宛先ホスト９１２に正しく届いているものと判断する。そのため、第１のパターンの遅延確認応答ではこのことを利用して、始めから全てのデータにはＡＣＫを返さず、２個に１個のＡＣＫを返す。これにより、流通するパケットが減りネットワークの使用効率が良くなる。
【特許文献１】特開２００１−１１１６１８号公報
【特許文献２】特開２００２−３７４３０１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかし、従来の遅延確認応答を行うデータ通信のＲＴＴ計測では、第１のパターンによるＡＣＫなのか、第２のパターンによるＡＣＫなのかを判別することができなかった。第２のパターンの場合、計測したＲＴＴには、ＡＣＫを意図的に遅らせた“Delayed ＡＣＫ”の時間が含まれる。そのため、第２のパターンによって計測されたＲＴＴは、ネットワーク上のデータ送受信に要する遅延時間を正確に表すものではない。このように、計測したＲＴＴに第２のパターンの“Delayed ＡＣＫ”による遅延時間が含まれる可能性があることにより、ＲＴＴの信頼性が低下していた（正確でない可能性があった）。
【００１２】
本発明はこのような点に鑑みてなされたものであり、“Delayed ＡＣＫ”を含まないＡＣＫのみを選択して遅延時間を計算することができる遅延時間計測装置、遅延時間計測プログラム、および遅延時間計測方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、データ送信から該データ送信に対する応答があるまでの遅延時間を計測する遅延時間計測装置であって、送信元装置から宛先装置に送られるデータパケットを受信して、受信した前記データパケットのシーケンス番号、データ長および受信時刻を対応付けて記憶手段に格納し、前記宛先装置から前記送信元装置に返されるＡＣＫパケットを受信して、受信した前記ＡＣＫパケットのＡＣＫ番号および受信時刻を対応付けて前記記憶手段に格納する格納制御手段と、前記送信元装置から前記宛先装置に送信される第１のデータパケットに対するＡＣＫパケットを待たずに前記送信元装置から前記宛先装置に前記第１のデータパケットのあとに送信される第２のデータパケットに対応するシーケンス番号と、前記第２のデータパケットに対するＡＣＫパケットに対応するＡＣＫ番号とを前記記憶手段から検出し、検出されたシーケンス番号に対応付けて格納された受信時刻と検出された前記ＡＣＫ番号に対応付けて格納された受信時刻とに基づいて前記遅延時間を計算する計算手段と、を有する遅延時間計測装置が提供される。
【００１４】
また、上記遅延時間計測装置と同様の機能をコンピュータに実行させる遅延時間計測プログラムが提供される。さらに、上記遅延時間計測装置と同様の処理をコンピュータで行う遅延時間計測方法が提供される。
【発明の効果】
【００１５】
上記遅延時間計測装置、遅延時間計測プログラム、および遅延時間計測方法では、“Delayed ＡＣＫ”を含まないＡＣＫのみを選択して遅延時間を計算することができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、実施の形態の概要を示す図である。遅延時間計測装置１は、送信元装置２によるデータ送信から、宛先装置３からの確認応答があるまでの往復遅延時間を計測するものである。遅延時間計測装置１は、データ解析手段１ａ、記憶手段１ｂ、および計算手段１ｃを有している。
【００１７】
データ解析手段１ａは、送信元装置２から宛先装置３に送られるデータパケットをキャプチャして、キャプチャしたデータパケットのシーケンス番号とデータ長とを取得し、受信時刻（タイムスタンプ）を付加して記憶手段１ｂに格納する。なお、データ長は、ＩＰヘッダ（後述する図１１参照）内にあるTotal Lengthの値からＩＰヘッダの長さを表すＩＨＬの値と、ＴＣＰヘッダ（後述する図１２参照）内にあるheader lengthの値をそれぞれ差し引いた値である。また、データ解析手段１ａは、宛先装置３から送信元装置２に返されるＡＣＫパケットをキャプチャして、キャプチャしたＡＣＫパケットからＡＣＫ番号を取得し、受信時刻（タイムスタンプ）を付加して記憶手段１ｂに格納する。
【００１８】
計算手段１ｃは、ＡＣＫパケットを待たずに送信された２つの連続するデータパケット（連続するデータを送信するデータパケット）を記憶手段１ｂから取得する。さらに、計算手段１ｃは、連続するデータパケットにおける２番目のデータパケットのシーケンス番号にデータ長を加算した値がＡＣＫ番号となるＡＣＫパケットを記憶手段１ｂから取得する。そして、計算手段１ｃは、連続する２番目のデータパケットの受信時刻と取得されたＡＣＫパケットの受信時刻とから遅延時間を計算する。具体的には、計算手段１ｃは、２番目のデータパケットの受信時刻とＡＣＫの受信時刻との差を前記往復遅延時間とする。
【００１９】
このような遅延時間計測装置１によれば、送信元装置２から宛先装置３に送られるデータパケットがデータ解析手段１ａでキャプチャされ、データパケットのシーケンス番号、データ長、および受信時刻が記憶手段１ｂに格納される。また、宛先装置３から送信元装置２に返されるＡＣＫパケットがデータ解析手段１ａでキャプチャされ、ＡＣＫパケットのＡＣＫ番号と受信時刻とが記憶手段１ｂに格納される。その後、計算手段１ｃにより、ＡＣＫパケットを待たずに送信された２つの連続するデータパケットが記憶手段から取得される。また、計算手段１ｃにより、連続するデータパケットにおける２番目のデータパケットのシーケンス番号にデータ長を加算した値がＡＣＫ番号となるＡＣＫパケットが記憶手段１ｂから取得される。そして、計算手段１ｃにより、連続する２番目のデータパケットの受信時刻と取得されたＡＣＫパケットの受信時刻とから往復遅延時間が計算される。
【００２０】
このようにして、“Delayed ＡＣＫ”を含まない遅延確認応答によってＲＴＴを計測することができる。その結果、ネットワーク上で発生するパケット伝送の遅延が正確に反映されたＲＴＴを得ることができる。
【００２１】
ここで、遅延確認応答について詳しく説明する。遅延確認応答におけるＡＣＫの応答タイミングには、第１のパターンと第２のパターンとがある。
図２は、ＡＣＫ応答タイミングの第１のパターンを示す図である。第１のパターンは、宛先装置３のデータを２回受信したときに、ＡＣＫを送信する場合である。図２の例では、送信元装置２から２つのデータパケット５ａ，５ｂが宛先装置３に送信されている。宛先装置３では、データパケット５ａに対するＡＣＫは送信せず、データパケット５ｂに対するＡＣＫパケット５ｃを送信元装置２に送信する。
【００２２】
データパケット５ａ，５ｂには、シーケンス番号（Seq）が含まれている。
シーケンス番号は、送信するデータパケットに付与されるユニークな番号である。データ長は、送信するデータのサイズ（例えば、バイト単位）である。シーケンス番号はコネクション確立時に初期値が割り当てられ、コネクション確立中にデータパケットを送信するごとに値が更新される。シーケンス番号の更新は、送信したデータのデータ長に相当する値を加算することで行われる。
【００２３】
図２の例ではデータサイズが「１０バイト」であり、データパケット５ａ送信時点でのシーケンス番号が「２００」であるものとする。この場合、データパケット５ａに付与されるシーケンス番号は「Seq=200」であり、データ長は「Len=10」である。
【００２４】
送信元装置２は、ウィンドウサイズの範囲内においてデータを連続で（ＡＣＫを待たずに）送信できる。そこで送信元装置２は、データパケット５ａのシーケンス番号「Seq=200」の値にデータ長「Len=10」の値を加算（Seq+Len）し、シーケンス番号を更新する。そして、送信元装置２は、データパケット５ａに続けて更新されたシーケンス番号が付与されたデータパケット５ｂを送信する。その結果、データパケット５ｂのシーケンス番号は「Seq=210」となり、データ長は「Len=10」となる。
【００２５】
宛先装置３では、データパケット５ａとデータパケット５ｂを受信すると、データを２回受信したと認識し、ＡＣＫパケット５ｃを送信元装置２に応答する。ＡＣＫパケット５ｃには、ＡＣＫ番号が含まれる。ＡＣＫ番号は、次に送信元装置２から受け取りを期待するデータのシーケンス番号が示される。すなわち、ＡＣＫ番号は、ＡＣＫ番号で示されたデータの直前のデータまでのすべてのデータを正しく受信したことを示している。図２の例では、データパケット５ａとデータパケット５ｂとを受信したことにより、２００番目のデータから２０バイト分のデータを受信したこととなる。そこで宛先装置３は、ＡＣＫ番号「220」を付与したＡＣＫパケット５ｃを宛先装置３に送信する。
【００２６】
このとき、送信元装置２がデータパケット５ｂを送信してから、ＡＣＫパケット５ｃを受信するまでの時間がＲＴＴである。
図３は、ＡＣＫ応答タイミングの第２のパターンを示す図である。第２のパターンは、“Delayed ＡＣＫ”を応答する場合である。図３の例では、送信元装置２から１つのデータパケット６ａが宛先装置３に送信されているが、そのデータパケット６ａに続くデータ送信が行われていない。宛先装置３では、データパケット６ａに対するＡＣＫは送信せず後続のパケットを待つが、所定の時間待ってもパケットが到着しない場合、データパケット６ａに対するＡＣＫパケット６ｂを送信元装置２に送信する。このＡＣＫパケット６ｂによる確認応答は、Delayed ＡＣＫである。
【００２７】
図３の例では、データパケット６ａに付与されているシーケンス番号は「Seq=200」であり、データ長は「Len=10」である。宛先装置３は所定の遅延時間経過後、ＡＣＫ番号「210」を付与したＡＣＫパケット６ｂを送信元装置２に送信する。
【００２８】
ここで、送信元装置２付近で計測可能なＲＴＴは、データパケット６ａを送信してからＡＣＫパケット６ｂを受信するまでの時間である。しかし、この時間には“Delayed ＡＣＫ”のための余分な遅延時間が含まれている。ＲＴＴとして本来計測したい値は、“Delayed ＡＣＫ”による意図的な遅延時間を含まないデータ伝送による遅延時間である。すなわち、宛先装置３による意図的な遅延処理に基づく時間遅延が含まれていると、ＲＴＴがネットワークの通信品質を正しく表さなくなる。
【００２９】
ここで、図２の第１のパターンと図３の第２のパターンとを比較すると、第１のパターンの宛先装置３はデータパケットを２回受信すると１つのＡＣＫパケットを返すが、第２のパターンはデータパケットを１回受信し、２回目が来ない場合にＡＣＫパケットを返す。ということは、データパケットを２回受信することをカウントし、その後のＡＣＫパケットにおけるＡＣＫ番号＝シーケンス番号（Seq）＋データ長（Len）のときにＲＴＴを計測するようにすればよい。
【００３０】
図４は、遅延時間計測対象のパケット送受信パターンを示す図である。図４の例では、ＡＣＫパケット７ａを受信した送信元装置２が、２つのデータパケット７ｂ、７ｃを送信している。宛先装置３は、データパケット７ｃ受信後にＡＣＫパケット７ｄを応答している。
【００３１】
この場合、遅延時間計測装置１では、ＡＣＫパケット７ａおよびＡＣＫパケット７ｄを挟んで、少なくとも２つのデータパケット７ｂ，データパケット７ｃが送信されたことを確認する。すなわち、データパケット７ｃのシーケンス番号＋データ長の値と、ＡＣＫパケットのＡＣＫ番号の値とを比較し、一致することを確認した後、宛先ホストから前回送信されたＡＣＫパケット７ａ、および今回送信されたＡＣＫパケット７ｄのＡＣＫ番号の差である２０が、データパケット７ｃのデータ長（Len）である１０よりも大きいことを確認する。この結果、少なくとも１個以上のデータパケットが７ｃの前に存在することが判断できる。すなわち、ＡＣＫパケット７ｄは“Delayed ＡＣＫ”ではないことが判断できる。そして、遅延時間計測装置１は、２つ目のデータパケット７ｃが送信されてからＡＣＫパケット７ｄが応答されるまでの時間を計測し、ＲＴＴとする。
【００３２】
このように、２つのデータパケットが連続で送信されていることを、ＲＴＴ測定の条件とすることで、“Delayed ＡＣＫ”によるＡＣＫパケットについては測定対象外となる。すなわち、“Delayed ＡＣＫ”によるＡＣＫパケットとそれ以前のＡＣＫパケットとの間には１つのデータパケットしか送信されていない。そのため、計測対象から除外される。その結果、遅延時間計測装置１は、第１のパターンによるＡＣＫが応答された場合に限定してＲＴＴ計測を行うことができ、正確なＲＴＴ計測が可能となる。
【００３３】
ところで、遅延時間計測装置１の機能は、ネットワーク上の通信を監視するモニタ装置に内蔵することができる。すなわち、モニタ装置内の遅延時間計測機能に図１に示した技術を適用することで、正確なＲＴＴ計測が可能となる。そこで、遅延時間計測機能を内蔵したモニタ装置の例を用いて、以下に実施の形態を詳細に説明する。
【００３４】
［第１の実施の形態］
第１の実施の形態では、ネットワークから分岐させた信号（あるいはパケット）のモニタリングを行うモニタ装置に、遅延時間計測機能を実装するものとする。すなわち、伝送路からパケットのコピーを転送する機器を用いれば、遅延時間計測装置１はその機器経由でパケットを取得できる。ネットワーク上を伝送するパケットのコピーを生成するための機器としては、ポートミラーリング機能を有するスイッチングハブやネットワークタップがある。
【００３５】
ポートミラーリング機能とは、送受信するフレームのコピーを指定した物理ポートへ送信する機能である。ここでフレームとは、ＯＳＩ（Open System Interconnection）参照モデルにおけるデータリンク層で送信される信号の単位であり、ＩＰパケットをカプセル化している。従って、コピーされたフレームから、データパケットやＡＣＫパケットを取り出すことができる。
【００３６】
また、ネットワークタップは、伝送路上の信号を光スプリッタなどによって分岐させ、一方をモニタリング用のポートに出力するものである。このネットワークタップを用いれば、データロスなしにコピーされたパケットをモニタポートから出力できる。そこで、第１の実施の形態では、ネットワークタップを用いて信号を分岐させて、その信号をモニタリングすることとする。
【００３７】
図５は、第１の実施の形態のシステム構成例を示す図である。モニタ装置１００は、送信元ホスト２１と宛先ホスト２２との間の遅延時間を計測する。送信元ホスト２１は、ネットワーク１０を介して宛先ホスト２２に接続されている。この時、送信元ホスト２１とネットワーク１０との間には、ネットワークタップ３０が接続されている。ネットワークタップ３０は、送信元ホスト２１に対して送受信されるパケットのコピーを生成し、コピーされたパケットをモニタ装置１００に送信する。
【００３８】
なお、ネットワークタップ３０とモニタ装置１００とは、２本の通信ケーブル３１，３２で接続されている。一方の通信ケーブル３１は、送信元ホスト２１から宛先ホスト２２への信号を分岐させた信号を送出するためのものである。もう一方の通信ケーブル３２は、宛先ホスト２２から送信元ホスト２１への信号を分岐させた信号を送出するためのものである。モニタ装置１００は、ネットワークタップ３０から受け取ったパケットを解析し、往復遅延時間（ＲＴＴ）を計測する。
【００３９】
図６は、本実施の形態に用いるモニタ装置のハードウェア構成例を示す図である。モニタ装置１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、入出力インタフェース１０４、およびＬＡＮインタフェース１０５，１０６が接続されている。
【００４０】
ＲＡＭ１０２は、モニタ装置１００の主記憶装置として使用される。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３は、モニタ装置１００の二次記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００４１】
入出力インタフェース１０４は、ＲＣ２３２Ｃなどの通信インタフェースである。入出力インタフェース１０４には、コンソール端末１１を接続することができる。システムの管理者は、コンソール端末１１を用いてモニタ装置１００に対するＲＴＴ計測開始の指示を入力したり、計測したＲＴＴの値を表示したりすることができる。
【００４２】
ＬＡＮインタフェース１０５は、通信ケーブル３１によってネットワークタップ３０に接続されている。ＬＡＮインタフェース１０５は、通信ケーブル３１を介してネットワークタップ３０で分岐された送信元ホスト２１からの出力信号を取得する。ＬＡＮインタフェース１０５は、入力した信号によって伝送されたフレームを認識し、フレーム内の情報をＣＰＵ１０１に渡す。
【００４３】
ＬＡＮインタフェース１０６は、通信ケーブル３２によってネットワークタップ３０に接続されている。ＬＡＮインタフェース１０６は、通信ケーブル３２を介してネットワークタップ３０で分岐された送信元ホスト２１への入力信号を取得する。ＬＡＮインタフェース１０６は、入力した信号によって伝送されたフレームを認識し、フレーム内の情報をＣＰＵ１０１に渡す。
【００４４】
なお、一般的な通信インタフェースは、自身宛のパケットのみを取得するが、モニタ装置１００のＬＡＮインタフェース１０５，１０６ではモニタリングのために、宛先に関係なくすべてのパケットを取得する。また、モニタ装置１００に、管理用のＬＡＮインタフェースを追加することもできる。その場合、管理用のＬＡＮインタフェースに対してネットワーク経由で管理用のコンピュータを接続する。システムの管理者は、管理用のコンピュータを操作してモニタ装置１００に対するＲＴＴ計測指示を入力したり、および計測されたＲＴＴを管理用のコンピュータにコピーすることができる。
【００４５】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
次に、モニタ装置１００の有する機能を具体的に説明する。
【００４６】
図７は、モニタ装置の機能を示すブロック図である。モニタ装置１００は、パケットキャプチャ部１１０とＲＴＴ計測部１２０とを有している。
パケットキャプチャ部１１０は、ネットワークタップ３０から取得した信号からパケットを取得する。そのために、パケットキャプチャ部１１０は、入力部１１１とパケット情報取得部１１２とを有している。入力部１１１は、送信されたデータパケット、あるいは返信されたＡＣＫパケットを取り込む。パケット情報取得部１１２は、パケットからＩＰヘッダとＴＣＰヘッダ（以下、ＩＰヘッダとＴＣＰヘッダとを纏めてヘッダ情報と呼ぶ）を取り出し、キャプチャした時間（タイムスタンプ）を付けてＲＴＴ計測部１２０へ渡す。
【００４７】
ＲＴＴ計測部１２０は、パケットキャプチャ部１１０から渡された情報に基づいて遅延時間を計測する。そのために、ＲＴＴ計測部１２０は、データ処理部１２１、ＡＣＫ処理部１２３、データ／ＡＣＫ用メモリ１２４、演算処理部１２５、およびＲＴＴ計測値データベース（ＤＢ）１２６を有している。
【００４８】
データ処理部１２１は、データパケットのヘッダ情報からデータを関係付けし、データ／ＡＣＫ用メモリ１２４へ保存する。ＡＣＫ処理部１２３は、ＡＣＫパケットのヘッダ情報からデータを関係付けし、データ／ＡＣＫ用メモリ１２４へ保存する。
【００４９】
データ／ＡＣＫ用メモリ１２４は、データ処理部１２１の解析結果を記憶する。また、データ／ＡＣＫ用メモリ１２４は、ＡＣＫ処理部１２３の解析結果を記憶する。例えば、ＲＡＭ１０２の記憶領域の一部がデータ／ＡＣＫ用メモリ１２４として使用される。具体的には、データ処理部１２１やＡＣＫ処理部１２３の解析結果は、データ／ＡＣＫ用メモリ１２４内のＴＣＰセッションテーブル１２４ａに設定される。ＴＣＰセッションテーブル１２４ａは、キャプチャしたパケットに基づいて認識できるＴＣＰセッションの情報を管理するデータテーブルである。
【００５０】
演算処理部１２５は、データ／ＡＣＫ用メモリ１２４からデータを取り出し、遅延時間計測の判定とＲＴＴ計測値を算出する。
ＲＴＴ計測値ＤＢ１２６は、ＲＴＴ計測値を格納する。例えば、ＨＤＤ１０３の記憶領域の一部がＲＴＴ計測値ＤＢ１２６として使用される。
【００５１】
図８は、ＴＣＰセッションテーブルを示す図である。ＴＣＰセッションテーブル１２４ａには、ＴＣＰセッションＩＤ、送信元アドレス、複数のデータパケット、および前回ＡＣＫの各欄が設けられている。
【００５２】
ＴＣＰセッションＩＤの欄には、送信元ホスト２１と宛先ホスト２２との間のＴＣＰセッションを一意に識別するための識別情報（ＴＣＰセッションＩＤ）が設定される。ＴＣＰセッションＩＤは、ＴＣＰ／ＩＰのパケットの送信元ＩＰアドレス、送信元ポート番号、宛先ＩＰアドレス、宛先ポート番号の組から一意に決定される値である。なお、送信元ＩＰアドレスと宛先ＩＰアドレス、および送信元ポート番号と宛先ポート番号がそれぞれ相互に入れ替わっても、同じセッションＩＤが得られる。
【００５３】
送信元ＩＰアドレスの欄には、パケットの送信元ＩＰアドレス（ＳＡ）が設定される。
複数のデータパケットの欄には、同一セッションにおいて対応する送信元ＩＰアドレスから送信されたデータパケットそれぞれに関する情報が設定される。該当セッションで検出されたデータパケットの順に、検出されたデータパケットに関する情報が、第１のデータパケット情報（ＤＰ１）、第２のデータパケット情報（ＤＰ２）、・・・として設定される。設定されるデータパケットの情報は、受信時刻（Ｔｉｍｅ）、シーケンス番号（Seq）、およびデータ長（Len）である。
【００５４】
前回ＡＣＫの欄には、ＴＣＰセッション内の通信で最後に検出されたＡＣＫパケットのＡＣＫ番号が設定される。
図９は、ＲＴＴ計測値ＤＢのデータ構造例を示す図である。ＲＴＴ計測値ＤＢ１２６には、ＴＣＰ統計テーブル１２６ａが格納されている。ＴＣＰ統計テーブル１２６ａには、ＴＣＰセッションＩＤ、送信元ホストＩＰアドレス、ＲＴＴ計測値の積算値を表すＲＴＴ総和、ＲＴＴ二乗和、ＲＴＴ計測回数の欄が設けられている。
【００５５】
ＴＣＰセッションＩＤの欄には、検出されたセッションのＴＣＰセッションＩＤが設定される。
送信元ＩＰアドレスの欄には、対応するセッションの内で検出されたパケットの送信元のＩＰアドレスが設定される。
【００５６】
ＲＴＴ総和の欄には、対応するセッションの送信元ＩＰアドレスで示されるノードから送信されたデータパケットと、そのデータパケットに対するＡＣＫパケットとに基づいて計測されたＲＴＴの総和が設定される。
【００５７】
ＲＴＴ二乗和の欄には、対応するセッションの送信元ＩＰアドレスで示されるノードから送信されたデータパケットと、そのデータパケットに対するＡＣＫパケットとに基づいて計測されたＲＴＴそれぞれを二乗した値の総和が設定される。
【００５８】
ＲＴＴ計測回数の欄には、対応するセッションの送信元ＩＰアドレスで示されるノードから送信されたデータパケットと、そのデータパケットに対するＡＣＫパケットとに基づいて計測されたＲＴＴの数が設定される。
【００５９】
図１０は、パケットの構造を示す図である。ＴＣＰ／ＩＰのパケット４０には、ＩＰヘッダ４１とＴＣＰヘッダ４２とが含まれている。ＩＰヘッダ４１は、ネットワーク層のプロトコルであるＩＰに従った通信のための情報である。ＴＣＰヘッダ４２は、トランスポート層のプロトコルであるＴＣＰに従った通信のための情報である。
【００６０】
図１１は、ＩＰヘッダの構造を示す図である。ＩＰヘッダ４１には、バージョン（Version）、ヘッダ長（IHL）、サービスタイプ（Type of Service）、パケット長（Total Length）、識別子（Identification）、フラグ（Flags）、フラグメントオフセット（Fragment Offset）、生存時間（Time to Live）、プロトコル（Protocol）、ヘッダチェックサム（Header Checksum）、送信元アドレス（Source Address）、宛先アドレス（Destination Address）、オプション（Options）、およびパディング（Padding）のフィールドが設けられている。
【００６１】
バージョンは、ＩＰのバージョンを表す。ヘッダ長は、ＩＰヘッダの長さを４バイト単位で示す。サービスタイプは、ＩＰサービスの品質を表す。パケット長は、 ＩＰヘッダ４１にＩＰデータを加えたパケット全体の長さを表す。識別子は、ＩＰパケットを識別するためのユニークな値である。フラグは、パケットの分割に関する制御情報である。フラグメントオフセットは、分割されたデータが、分割前のデータの先頭から何ビット目から始まるのかを表す。生存時間は、ＩＰデータグラムが通過できるルータの数を表す。プロトコルは、ＩＰパケットに格納されたデータのプロトコルを表す（ＴＣＰは「６」である）。ヘッダチェックサムは、ＩＰヘッダが壊れていないか検査するための値が入れられる。送信元ＩＰアドレスは、パケットの送信元のＩＰアドレスである（データパケットであれば送信元ホスト２１が送信元であり、ＡＣＫパケットであれば宛先ホスト２２が送信元である）。宛先ＩＰアドレスは、パケットの宛先のＩＰアドレスである（データパケットであれば宛先ホスト２２が宛先であり、ＡＣＫパケットであれば送信元ホスト２１が宛先である）。オプションは、テストなどで使用される領域であり、パケットの送信元において送信時刻を示すタイムスタンプを設定することができる。パディングは、オプションを付加したことでヘッダ長が３２ビットの整数倍にならない場合に、ヘッダ長を３２ビットの整数倍にするための穴埋め（パディング）のデータである。
【００６２】
データ処理部１２１は、このようなＩＰヘッダ４１を有するデータパケットから送信元ＩＰアドレスを取得して、ＴＣＰセッションテーブル１２４ａに設定する。同様に、ＡＣＫ処理部１２３は、このようなＩＰヘッダ４１を有するＡＣＫパケットから送信元ＩＰアドレスを取得して、ＴＣＰセッションテーブル１２４ａに設定する。
【００６３】
図１２は、ＴＣＰヘッダの構造を示す図である。ＴＣＰヘッダ４２には、送信元ポート番号（source port number）、宛先ポート番号（destination port number）、シーケンス番号（sequence number）、ＡＣＫ番号（acknowledgement number）、ヘッダ長（header length）、予約領域（Reserved）、コードビット（ＵＲＧ，ＡＣＫ，ＰＳＨ，ＲＳＴ，ＳＹＮ，ＦＩＮ）、ウィンドウサイズ（windows size）、チェックサム（TCP checksum）、緊急ポインタ（urgent pointer）、およびオプション（options）が設けられている。
【００６４】
送信元ポート番号は、パケットを送信したプログラムを示す番号である。宛先ポート番号は、パケットを受信すべきプログラムを示す番号である。シーケンス番号は、データパケットの送信時に送信元ホスト２１で付与される。ＡＣＫ番号は、ＡＣＫパケットの送信時に宛先ホスト２２で付与され、次に受信することを期待するデータパケットのシーケンス番号を示す。ヘッダ長は、ＴＣＰヘッダ４２の長さを示している。予約領域は、将来の拡張のために用意されたフィールドである。
【００６５】
コードビットは、各種制御用のフラグである。ＵＲＧが「１」の場合、緊急に処理すべきデータが含まれていることを示す。ＡＣＫが「１」の場合、応答確認番号が使用されていることを示す。ＰＳＨが「１」の場合、ＴＣＰから上位のアプリケーションに対して、受け取ったデータをすぐに配送することを示す。ＲＳＴが「１」の場合、なんらかの要因で通信不良が起き制御不能になったことを示す。ＳＹＮが「１」の場合、このＴＣＰヘッダに示すシーケンス番号で、シーケンス番号の初期化を行うことを示す。ＦＩＮが「１」の場合、送信側が送るデータが終了したことを示す。
【００６６】
ウィンドウサイズは、ＡＣＫ番号で示したシーケンス番号からどの程度のデータを受信可能なのかを示す。チェックサムは、ＴＣＰヘッダとデータが壊れていないか検査するための値が入れられる。緊急ポインタは、ＵＲＧが「１」のときに有効となり、緊急を要するデータの格納場所を示すポインタである。オプションには、任意の情報が設定される。
【００６７】
データ処理部１２１は、このようなＴＣＰヘッダ４２を有するデータパケットからシーケンス番号を取得して、ＴＣＰセッションテーブル１２４ａに設定する。また、データ処理部１２１は、データパケットに含まれているデータを取得し、そのデータの長さをデータ長としてＴＣＰセッションテーブル１２４ａに設定する。さらに、データ処理部１２１は、データパケットに対応するＴＣＰセッションＩＤを計算し、設定すると共に、データパケットを受信した時刻を設定する。
【００６８】
ＡＣＫ処理部１２３は、このようなＴＣＰヘッダ４２を有するＡＣＫパケットからＡＣＫ番号を取得して、ＴＣＰセッションテーブル１２４ａに設定する。また、ＡＣＫ処理部１２３は、該当するＴＣＰセッションＩＤのところに、ＡＣＫパケットを受信した時刻をキャプチャ時刻の欄に設定する。
【００６９】
次に、ＲＴＴを計測する手順を説明する。
図１３は、ＲＴＴ計測処理の手順を示すフローチャートである。まず、データ処理部１２１とＡＣＫ処理部１２３は、それぞれ新たなパケットを受信したか否かを判断する（ステップＳ１）、パケットを受信していなければ、パケットの受信を待つ（ステップＳ１を繰り返す）。パケットを受信した場合（ステップＳ１でＹＥＳの場合）、データ処理部１２１とＡＣＫ処理部１２３はそれぞれ、受信したＴＣＰ／ＩＰパケットの送信元ＩＰアドレス、送信元ポート番号、宛先ＩＰアドレス、宛先ポート番号の組からＴＣＰセッションＩＤを作成する（ステップＳ２）。ＴＣＰ／ＩＰのセッションにおいては、同一セッションであっても、ＩＰアドレスとポート番号の組が送信元の場合もあり、宛先の場合もある。そのため、送信元と宛先とに対するＩＰアドレスとポート番号との組みが入れ替わっても、これらを同一とみなす必要がある。本実施形態では、ＴＣＰセッションＩＤは受信したＴＣＰ／ＩＰパケットが同一のセッション（コネクション）に属するか判定するために用いる識別子で、送信元と宛先とのそれぞれのＩＰアドレスとポート番号とが逆転しても同一のセッションと判断できる値である。
【００７０】
データ処理部１２１とＡＣＫ処理部１２３はそれぞれ、受信したパケットのＴＣＰセッションＩＤと送信元ＩＰアドレスとに対応するレコードがＴＣＰセッションテーブル１２４ａに存在するか否かを判断する（ステップＳ３）。該当するレコードが存在しない場合（ステップＳ３でＮＯ）、データ処理部１２１が新たなＴＣＰセッションＩＤと送信元ＩＰアドレスとを持つレコードをＴＣＰセッションテーブル１２４ａに登録する（ステップＳ４）。この処理は、ＴＣＰセッションを確立するためのパケットを受信したときに実行されることとなる。例えば、送信元ホスト２１から宛先ホスト２２に送信されたセッション確立を要求するパケットを検出したものとする。この場合、検出したパケットに応じたＴＣＰセッションＩＤと送信元ＩＰアドレス（送信元ホスト２１のＩＰアドレス）に対応するレコードが、ＴＣＰセッションテーブル１２４ａに追加される。次に、送信元ホスト２１からのセッションの確立要求する宛先ホスト２２からの応答を示すパケットが検出されたものとする。すると、検出したパケットに応じたＴＣＰセッションＩＤと送信元ＩＰアドレス（宛先ホスト２２のＩＰアドレス）に対応するレコードが、ＴＣＰセッションテーブル１２４ａに追加される。
【００７１】
ステップＳ３の処理において該当するレコードが存在した場合（ステップＳ３でＹＥＳ）、データ処理部１２１とＡＣＫ処理部１２３はそれぞれ、受信したパケットのデータ長（Len）が０以上か否かを判断する（ステップＳ５）。データ長（Len）が０以上であれば（ステップＳ５でＹＥＳ）、データ処理部１２１は、ＴＣＰセッションテーブル１２４ａの該当レコードにデータパケットの受信時刻（Ｔｉｍｅ）、シーケンス番号（Seq）、およびデータ長（Len）をＤＰｘ（ｘ＝１，２，．．Ｎ）として記録する（ステップＳ６）。ここで、ｘは、該当するレコード内のデータパケット情報の順番を示す数字である。また、Ｎは自然数である。なお、１レコードあたりデータパケットを記録する最大数であるＮは任意の数でよく、ここではＮは有限であると想定する。なお有限である場合で、ステップＳ６において記録する領域がない場合（既にｘ＝Ｎのデータパケット情報がある場合）は記録しない。
【００７２】
次にデータ処理部１２１は、ＡＣＫタ処理部１２３は、受信したパケットの宛先ＩＰアドレスをＤＡとする（ステップＳ７）。
ＡＣＫ処理部１２３は受信しパケットと同じＴＣＰセッションＩＤが設定され、受信したパケットの宛先ＩＰアドレス（ＤＡ）が送信元ＩＰアドレス（ＳＡ）として設定されたレコードを、ＴＣＰセッションテーブル１２４ａから抽出する。そして、ＡＣＫ処理部１２３は、シーケンス番号（Seq）にデータ長（Len）を加算した値が、受信したパケットのＡＣＫ番号（ＡＣＫ）に一致するデータパケット情報（ＤＰ）があるか否か（ＤＡ＝ＳＡかつＡＣＫ＝Seq＋Len）を判断する（ステップＳ８）。
【００７３】
ステップＳ８で該当するデータパケット情報が検出された場合（ステップ８でＹＥＳ）、ＡＣＫに対応したデータパケットが、モニタ装置１００で既に受信されていることを意味する。この場合、受信したパケットが単一のデータパケットに対するＡＣＫなのか、複数のデータパケットに対するＡＣＫかを判断する必要がある。そのためＡＣＫ処理部１２３は、受信したパケットのＡＣＫと検出しレコードに記録されている前回ＡＣＫとの差分が、検出したデータパケット情報のデータ長（Len）より大きいか否かを判断する（ステップＳ９）。
【００７４】
受信したパケットのＡＣＫと検出しレコードに記録されている前回ＡＣＫとの差分がデータ長より大きければ（ステップＳ９でＹＥＳ）、該当するデータパケット情報が記録する前に連続する他のデータパケットを受信していることが分かり、ＲＴＴを正確に計測できる第１のパターンであると判断できる。そこでＡＣＫ処理部１２３は、パケットの受信時刻から、ステップＳ８の判断で該当したデータパケット情報に含まれる「Ｔｉｍｅ」を減算した値をＲＴＴとする（ステップＳ１０）。
【００７５】
ＲＴＴを算出したＡＣＫ処理部１２３は、算出したＲＴＴに基づいてＲＴＴ計測値テーブル１２６ａを更新する（ステップＳ１１）。具体的には、ＡＣＫ処理部１２３は、ステップＳ８で抽出したレコードのＴＣＰセッションＩＤと送信元ＩＰアドレスとを有するレコードを、ＴＣＰ計測値テーブル１２６ａから検索する。該当するレコードが見つからない場合、ＡＣＫ処理部１２３は、ＴＣＰセッションＩＤと送信元ＩＰアドレスとを設定した新たなレコードをＲＴＴ計測値テーブル１２６ａに追加する。新たに追加されたレコードのＲＴＴ総和の初期値は「０」、ＲＴＴ二乗和の初期値は「０」、ＲＴＴ計測回数の初期値は「０」である。そして、ＡＣＫ処理部１２３は、検出したかあるいは新たに途追加したレコードのＲＴＴ総和に対して、ステップＳ１０で算出したＲＴＴの値を加算する。また、ＡＣＫ処理部１２３は、該当するレコードのＲＴＴ二乗和に対して、ステップＳ１０で算出したＲＴＴを二乗した値を加算する。さらに、ＡＣＫ処理部１２３は、該当するレコードのＲＴＴ測定回数に１を加算（インクリメント）する。
【００７６】
なお、ステップＳ９で該当するデータパケット情報が検出されなかった場合（ステップＳ９でＮＯ）、ＲＴＴが正確に計測できない第２のパターンであると判断できる。そこで、ＡＣＫ処理部１２３は、受信したパケットのＡＣＫに対応するデータパケット情報（シーケンス番号にデータ長を加算した値が受信したパケットのＡＣＫ番号に等しい）、およびそのデータパケット情報よりも前に登録されたデータパケット情報を、ステップＳ８で検出したＴＣＰセッションテーブル１２４ａおレコードから消去する（ステップ１１）。
【００７７】
一方、ステップＳ８において該当するデータパケット情報が検出できなかった場合、何らかの理由でデータパケットを計測装置が受信できず、ＡＣＫパケットだけを受信したとみなせる。この場合、ＡＣＫ処理部１２３は、受信しパケットと同じＴＣＰセッションＩＤが設定され、受信したパケットの宛先ＩＰアドレス（ＤＡ）が送信元ＩＰアドレス（ＳＡ）として設定されたレコードを、ＴＣＰセッションテーブル１２４ａから抽出する。そして、ＡＣＫ処理部１２３は、シーケンス番号（Seq）にデータ長（Len）を加算した値が、受信したパケットのＡＣＫ番号（ＡＣＫ）未満となるデータパケット情報（ＤＰ）があるか否か（ＤＡ＝ＳＡかつＡＣＫ＞Seq＋Len）を判断する（ステップＳ１３）。
【００７８】
ＡＣＫ処理部１２３は、ステップＳ１３の判断の結果、該当するレコードおよびデータパケット情報がある場合、該当レコード内の該当データパケット情報よりも前に登録されたデータパケット情報を、ＴＣＰセッションテーブル１２４ａから消去する（ステップＳ１４）。
【００７９】
ステップＳ１２，Ｓ１４に示したように、ＲＴＴの計測に不要となったデータパケット情報を適宜削除することで、データパケット情報を記録する有限の領域を再利用できる。
ＡＣＫ処理部１２３は、ステップＳ１１Ｓ１２，Ｓ１４の処理後に、受信しパケットと同じＴＣＰセッションＩＤが設定され、受信したパケットの宛先ＩＰアドレス（ＤＡ）が送信元ＩＰアドレス（ＳＡ）として設定されたレコードの前回ＡＣＫを、受信したパケットのＡＣＫ番号を更新する（ステップＳ１５）。その後、処理がステップＳ１に進められる。
【００８０】
次に、第１のパターンと第２のパターンとのＡＣＫが混在する場合に、第１のパターンのみを抽出してＲＴＴ測定を行う具体例について説明する。
図１４は、第１のパターンと第２のパターンとのＡＣＫが混在する場合のシーケンス図である。図１４の例では、宛先ホスト２２からＡＣＫパケット５１（ＡＣＫ番号「２００」を受け取った送信元ホスト２１が、データパケット５２（シーケンス番号「２００」、データ長「１０」）を宛先ホスト２２に送信している。宛先ホスト２２では、データパケット５２に応答してＡＣＫパケット５３（ＡＣＫ番号「２１０」）を送信元ホスト２１に送信している。
【００８１】
送信元ホスト２１は、ＡＣＫパケット５３を受信した後に、データパケット５４（シーケンス番号２１０，データ長「１０」）とデータパケット５５（シーケンス番号２２０，データ長「１０」）とを続けて（ＡＣＫの受信を待たずに）送信している。宛先ホスト２２では、２つのデータパケット５４，５５に応答して、１つのＡＣＫパケット５６（ＡＣＫ番号「２３０」）を送信元ホスト２１に送信している。
【００８２】
ここで、ＡＣＫパケット５３は、１つのデータパケット５２に対するＡＣＫである。すると、ＡＣＫパケット５３は、第２のパターンによるＡＣＫである。また、ＡＣＫパケット５６は、２つの連続するデータパケット５４，５５に対するＡＣＫである。すると、ＡＣＫパケット５６は、第１のパターンによるＡＣＫである。
【００８３】
このような各パケットは、送信元ホスト２１の手前に配置されたネットワークタップ３０によって分岐され、モニタ装置１００に送られる。モニタ装置１００では、まず、２つの連続するデータパケットの検出が行われる。すると、データパケット５４，５５が検出される。データパケット５２については、直前のデータパケットに対するＡＣＫパケット５１が存在し、自身に対するＡＣＫパケット５３が存在することから、他のデータパケットとの連続性はない。そのため、データパケット５２は検出されない。
【００８４】
次にモニタ装置１００は、検出した２つのデータパケット５４，５５のうちの２つめのデータパケット５５のシーケンス番号にデータ長を加算した値をＡＣＫ番号とするＡＣＫパケット５６を検出する。そして、モニタ装置１００は、データパケット５５が送信されてからＡＣＫパケット５６が応答されるまでの時間をＲＴＴとして計測する。計測されたＲＴＴは、必ず第１のパターンによる遅延確認応答によって計測されたものであるため、正確にネットワーク上のデータ遅延を表すものである。すなわち、計測されたＲＴＴには“Delayed ＡＣＫ”による遅延時間が含まれていない。
【００８５】
ところで、図１４では、説明を分かりやすくするために、第１のパターンと第２のパターンとが時間的に重複していない例を示している。しかし、データ転送時のウィンドウサイズが大きいと、３つ以上のデータパケットが連続して送信されることもある。このような場合、第１のパターンと第２のパターンとが時間的に重複して検出されることもある。
【００８６】
図１５は、第１のパターンと第２のパターンとが時間的に重複した場合のシーケンス図である。図１５の例では、宛先ホスト２２からＡＣＫパケット６１（ＡＣＫ番号「２００」を受け取った送信元ホスト２１が、データパケット６２（シーケンス番号「２００」、データ長「１０」）、データパケット６３（シーケンス番号２１０，データ長「１０」）とデータパケット６４（シーケンス番号２２０，データ長「１０」）を続けて（ＡＣＫの受信を待たずに）送信している。
【００８７】
宛先ホスト２２では、データパケット６２に応答してＡＣＫパケット６５（ＡＣＫ番号「２１０」）を送信元ホスト２１に送信している。また、宛先ホスト２２では、２つのデータパケット６３，６４に応答して、１つのＡＣＫパケット６６（ＡＣＫ番号「２３０」）を送信元ホスト２１に送信している。
【００８８】
ここで、ＡＣＫパケット６５は、１つのデータパケット６２に対するＡＣＫである。すると、ＡＣＫパケット６５は、第２のパターンによるＡＣＫである。また、ＡＣＫパケット６６は、２つの連続するデータパケット６３，６４に対するＡＣＫである。すると、ＡＣＫパケット６６は、第１のパターンによるＡＣＫである。
【００８９】
モニタ装置１００は、これらのパケットを送信元ホスト２１の手前でキャプチャする。モニタ装置１００では、まず、２つの連続するデータパケットの検出が行われる。すると、データパケット６３，６４が検出される。データパケット６２については、直前のデータパケットに対するＡＣＫパケット６１が存在し、自身に対するＡＣＫパケット６５が存在することから、他のデータパケットとの連続性はないと判断される。すなわち、時間的にデータパケット６２とデータパケット６３とが連続していても、１つめのデータパケット６２に対するＡＣＫパケット６５が存在する場合、データパケット６２とデータパケット６３とを、連続する２つのデータパケットであるとは判断しない。そのため、データパケット６２は検出されない。
【００９０】
次にモニタ装置１００は、検出した２つのデータパケット６３，６４のうちの２つめのデータパケット６４のシーケンス番号にデータ長を加算した値をＡＣＫ番号とするＡＣＫパケット６６を検出する。そして、モニタ装置１００は、データパケット６４が送信されてからＡＣＫパケット６６が応答されるまでの時間をＲＴＴとして計測する。
【００９１】
計測されたＲＴＴは、必ず第１のパターンによる遅延確認応答によって計測されたものであるため、正確にネットワーク上のデータ遅延を表すものである。すなわち、計測されたＲＴＴには“Delayed ＡＣＫ”による遅延時間が含まれていない。このように、途中に他のＡＣＫパケットが割り込んでも正確なＲＴＴを計測できる。
【００９２】
［第２の実施の形態］
第２の実施の形態は、ネットワークタップを使用せずに、モニタ装置を送信元ホストと宛先ホストとの間に配置したものである。
【００９３】
図１６は、第２の実施の形態のシステム構成例を示す図である。第２の実施の形態では、送信元ホスト２１とネットワーク１０との間にモニタ装置１００ａが接続されている。モニタ装置１００ａは、送信元ホスト２１と宛先ホスト２２との間で送受信されるパケットをキャプチャし、ＲＴＴを計測する。
【００９４】
図１７は、第２の実施の形態に係るモニタ装置の機能を示すブロック図である。第２の実施の形態にかかるモニタ装置１００ａの機能は、図７に示した第１の実施の形態に係るＲＴＴ計測１００とほぼ同じである。そこで、図１７のモニタ装置１００ａ内のＲＴＴ計測１００と同じ機能には図７と同じ符号を付し、説明を省略する。
【００９５】
第２の実施の形態におけるモニタ装置１００ａは、パケットキャプチャ部１１０ａ内に入力部１１３と出力部１１４とを備えている。入力部１１３は、送信元ホスト２１または宛先ホスト２２から送られたパケットをパケット情報取得部１１２ａに入力する。出力部１１４は、パケット情報取得部１１２ａを介して入力されたパケットを取得し、そのパケットの宛先に応じて、パケットを送信元ホスト２１または宛先ホスト２２に送信する。
【００９６】
パケット情報取得部１１２ａは、入力部１１３を介して入力されたパケットのコピーを生成し、ＲＴＴ計測部１２０に渡す。そして、パケット情報取得部１１２ａは、パケットを出力部１１４に渡す。
【００９７】
このようなモニタ装置１００ａにより、ネットワークタップなどの信号を分岐させる機器を介さずにパケットをキャプチャし、ＲＴＴの計測が可能となる。
なお、上記の第１、第２の実施の形態では、送信元ホスト２１から宛先装置２２に送られるデータパケットをキャプチャしているが、キャプチャするのではなく、パケットの各種情報を一旦ファイルなどの形式でデータ記録装置に記録しておくこともできる。この場合、モニタ装置１００は、パケットの各種情報を記憶データ記憶装置からデータ読み取り、ＲＴＴを計測することができる。
【００９８】
また、上記の各実施の形態に示したモニタ装置の処理機能は、コンピュータによって実現することができる。その場合、モニタ装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disc）などがある。
【００９９】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１００】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１０１】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
【図面の簡単な説明】
【０１０２】
【図１】実施の形態の概要を示す図である。
【図２】ＡＣＫ応答タイミングの第１のパターンを示す図である。
【図３】ＡＣＫ応答タイミングの第２のパターンを示す図である。
【図４】遅延時間計測対象のパケット送受信パターンを示す図である。
【図５】第１の実施の形態のシステム構成例を示す図である。
【図６】本実施の形態に用いるモニタ装置のハードウェア構成例を示す図である。
【図７】モニタ装置の機能を示すブロック図である。
【図８】ＴＣＰセッションテーブルを示す図である。
【図９】ＲＴＴ計測値ＤＢのデータ構造例を示す図である。
【図１０】パケットの構造を示す図である。
【図１１】ＩＰヘッダの構造を示す図である。
【図１２】ＴＣＰヘッダの構造を示す図である。
【図１３】ＲＴＴ計測処理の手順を示すフローチャートである。
【図１４】第１のパターンと第２のパターンとのＡＣＫが混在する場合のシーケンス図である。
【図１５】第１のパターンと第２のパターンとが時間的に重複した場合のシーケンス図である。
【図１６】第２の実施の形態のシステム構成例を示す図である。
【図１７】第２の実施の形態に係るモニタ装置の機能を示すブロック図である。
【図１８】ＴＣＰにおけるパケット送受信の基本動作例を示す図である。
【符号の説明】
【０１０３】
１  遅延時間計測装置
１ａ  データ解析手段
１ｂ  記憶手段
１ｃ  計算手段
２  送信元装置
３  宛先装置
４  ネットワーク
【図１】
0005018663.tif 000002
【図２】
0005018663.tif 000003
【図３】
0005018663.tif 000004
【図４】
0005018663.tif 000005
【図５】
0005018663.tif 000006
【図６】
0005018663.tif 000007
【図７】
0005018663.tif 000008
【図８】
0005018663.tif 000009
【図９】
0005018663.tif 000010
【図１０】
0005018663.tif 000011
【図１１】
0005018663.tif 000012
【図１２】
0005018663.tif 000013
【図１３】
0005018663.tif 000014
【図１４】
0005018663.tif 000015
【図１５】
0005018663.tif 000016
【図１６】
0005018663.tif 000017
【図１７】
0005018663.tif 000018
【図１８】
0005018663.tif 000019