遅延時間計測装置、遅延時間計測プログラム、および遅延時間計測方法
【課題】“Delayed ACK”を含まないACKのみを選択して遅延時間を計算できるようにする。
【解決手段】送信元装置2から宛先装置3に送られるデータパケットのシーケンス番号、データ長、および受信時刻が記憶手段1bに格納される。また、宛先装置3から送信元装置2に返されるACKパケットのACK番号と受信時刻とが記憶手段1bに格納される。その後、計算手段1cにより、ACKを待たずに送信された連続するデータパケットにおける2番目のデータパケットのシーケンス番号にデータ長を加算した値がACK番号となるACKパケットが、記憶手段1bから検出される。そして、計算手段1cにより、連続する2番目のデータパケットの受信時刻と検出されたACKパケットの受信時刻とから往復遅延時間が計算される。
【解決手段】送信元装置2から宛先装置3に送られるデータパケットのシーケンス番号、データ長、および受信時刻が記憶手段1bに格納される。また、宛先装置3から送信元装置2に返されるACKパケットのACK番号と受信時刻とが記憶手段1bに格納される。その後、計算手段1cにより、ACKを待たずに送信された連続するデータパケットにおける2番目のデータパケットのシーケンス番号にデータ長を加算した値がACK番号となるACKパケットが、記憶手段1bから検出される。そして、計算手段1cにより、連続する2番目のデータパケットの受信時刻と検出されたACKパケットの受信時刻とから往復遅延時間が計算される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータ送信から確認応答があるまでの往復遅延時間を計測する遅延時間計測装置、遅延時間計測プログラム、および遅延時間計測方法に関し、特に遅延確認応答が行われる場合の往復遅延時間を計測する遅延時間計測装置、遅延時間計測プログラム、および遅延時間計測方法に関する。
【背景技術】
【0002】
ネットワークを介したデータ通信のプロトコルには、データを受信した装置から確認応答を返すものがある。そのような通信プロトコルの1つにTCP/IP(Transmission Control Protocol/Internet Protocol)がある。TCP/IPでは、ネットワーク層のプロトコルはIPであり、トランスポート層のプロトコルはTCPまたはUDP(User Datagram Protocol)である。ここで、トランスポート層のプロトコルとしてTCPを用いたときに、受信したデータの確認応答が行われる。TCPでは、送信したパケットに対して必ず確認のための応答を送信することによって信頼性のある通信を実現している。
【0003】
図18は、TCPにおけるパケット送受信の基本動作例を示す図である。図18には、送信元ホスト911から送信されたデータに対する確認応答を宛先ホスト912が返す例が示されている。
【0004】
まず、送信元ホスト911は、送信対象のデータをTCPパケットに載せ(送信対象のデータにTCPヘッダを付加する)、それをIPパケットに載せて宛先ホスト912に送信する。IPパケットを受信した宛先ホスト912では、IPパケットからTCPパケットを取り出し、さらにTCPパケットからデータを取り出す。この際、宛先ホスト912は、取り出したデータを上位アプリケーションに届けると共に、送信元ホスト911に対して自動的に確認応答を返信する。確認応答の返信は、上位アプリケーションの指示とは関係なく、TCPのプロトコル・スタック内で自動的に行われる。
【0005】
この確認応答のことをTCPでは“Acknowledge(承認)”と呼ぶ(以下ではACKと略記する)。TCPのパケットを受信した側では、データを受け取ったことを表すため、ACKを返送する。送信元ホスト911では、このACKを受け取ることでデータ送信が完了したと認識し、次の動作に移る。一方、送信元ホスト911は、しばらく待ってもACKが受信できなければ、送信が失敗したものとみなしデータの再送動作を行う。
【0006】
このように、データ送信が行われるとACKが返される。そこで、ネットワーク上でのTCPによるデータ送信とACKとの通信パケットを監視することで、データの往復遅延時間(RTT: Round Trip Time)を計測することができる。つまりデータを送信し、そのデータを受信した証にACKを送り返されるので、その間の時間を計測すれば、それがRTTとなる。RTTを計測することで、ネットワークの品質などを把握することができる。
【0007】
なお、図18に示したような基本動作では、送信元ホスト911は、送信データに対する宛先ホスト912からのACKを受け取ってから、次のデータ送信を行う。すると、データ送信間隔があいてしまい、データ送信効率が低下する。そこで、送信元ホスト911においてACKを待たずに連続してデータを送信することが行われる。送信元ホスト911がACKを待たずに送信できるデータの大きさは、ウィンドウサイズと呼ばれる。送信元ホスト911が宛先ホスト912に送信する場合のウィンドウサイズは、宛先ホスト912から送信元ホスト911に通知される。
【0008】
また、データを受信した宛先ホスト912がすぐにACKを返すとウィンドウサイズとして小さな値を指定することがある。これは受信したばかりのデータで受信用のバッファがいっぱいになってしまうためである。小さなウィンドウサイズを通知された送信元ホスト911がその大きさでデータを送り、ACKの受信を待つとネットワークの利用効率が悪くなる。そこで、宛先ホスト912ではデータを受信してもすぐにACKを返さずに、所定の時間待ってからACKを返す方法が採られる。これを遅延確認応答という。
【0009】
具体的には、遅延確認応答では以下のような処理をしている。
・データを2回受信するまで確認応答をしない(第1のパターン)。
・そうでない場合は確認応答を最大で0.5秒間遅延させる(第2のパターン)。
【0010】
なお、第2のパターンで遅延させたACKのことをDelayed ACKと呼ぶ。また、第1のパターンでは、2つのデータに対して1つのACKを返すこととなる。これは、ACKは送信された全てのデータについて返ってこなくてもよいという既定を利用している。すなわち、ACKには、次に送信元ホスト911が送信することを期待するデータのシーケンス番号が含まれている。送信元ホスト911では、ACKに示されるシーケンス番号によって、そのシーケンス番号より前のすべてのデータが宛先ホスト912に正しく届いているものと判断する。そのため、第1のパターンの遅延確認応答ではこのことを利用して、始めから全てのデータにはACKを返さず、2個に1個のACKを返す。これにより、流通するパケットが減りネットワークの使用効率が良くなる。
【特許文献1】特開2001−111618号公報
【特許文献2】特開2002−374301号公報
【発明の開示】
【発明が解決しようとする課題】
【0011】
しかし、従来の遅延確認応答を行うデータ通信のRTT計測では、第1のパターンによるACKなのか、第2のパターンによるACKなのかを判別することができなかった。第2のパターンの場合、計測したRTTには、ACKを意図的に遅らせた“Delayed ACK”の時間が含まれる。そのため、第2のパターンによって計測されたRTTは、ネットワーク上のデータ送受信に要する遅延時間を正確に表すものではない。このように、計測したRTTに第2のパターンの“Delayed ACK”による遅延時間が含まれる可能性があることにより、RTTの信頼性が低下していた(正確でない可能性があった)。
【0012】
本発明はこのような点に鑑みてなされたものであり、“Delayed ACK”を含まないACKのみを選択して遅延時間を計算することができる遅延時間計測装置、遅延時間計測プログラム、および遅延時間計測方法を提供することを目的とする。
【課題を解決するための手段】
【0013】
上記課題を解決するために、以下のようなデータ送信から確認応答があるまでの往復遅延時間を計測する遅延時間計測装置が提供される。
遅延時間計測装置は、データ解析手段、記憶手段、および計算手段を有する。データ解析手段は、送信元装置から宛先装置に送られるデータパケットをキャプチャして、キャプチャしたデータパケットのシーケンス番号とデータ長とを取得し、受信時刻を付加して記憶手段に格納すると共に、宛先装置から送信元装置に返されるACKパケットをキャプチャして、キャプチャしたACKパケットからACK番号を取得し、受信時刻を付加して記憶手段に格納する。計算手段は、ACKパケットを待たずに送信された2つの連続するデータパケットを記憶手段から取得し、連続するデータパケットにおける2番目のデータパケットのシーケンス番号にデータ長を加算した値がACK番号となるACKパケットを記憶手段から取得し、連続する2番目のデータパケットの受信時刻と取得されたACKパケットの受信時刻とから往復遅延時間を計算する。
【0014】
また、上記遅延時間計測装置と同様の機能をコンピュータに実行させる遅延時間計測プログラムが提供される。さらに、上記遅延時間計測装置と同様の処理をコンピュータで行う遅延時間計測方法が提供される。
【発明の効果】
【0015】
上記遅延時間計測装置、遅延時間計測プログラム、および遅延時間計測方法では、“Delayed ACK”を含まないACKのみを選択して遅延時間を計算することができる。
【発明を実施するための最良の形態】
【0016】
以下、本発明の実施の形態を図面を参照して説明する。
図1は、実施の形態の概要を示す図である。遅延時間計測装置1は、送信元装置2によるデータ送信から、宛先装置3からの確認応答があるまでの往復遅延時間を計測するものである。遅延時間計測装置1は、データ解析手段1a、記憶手段1b、および計算手段1cを有している。
【0017】
データ解析手段1aは、送信元装置2から宛先装置3に送られるデータパケットをキャプチャして、キャプチャしたデータパケットのシーケンス番号とデータ長とを取得し、受信時刻(タイムスタンプ)を付加して記憶手段1bに格納する。なお、データ長は、IPヘッダ(後述する図11参照)内にあるTotal Lengthの値からIPヘッダの長さを表すIHLの値と、TCPヘッダ(後述する図12参照)内にあるheader lengthの値をそれぞれ差し引いた値である。また、データ解析手段1aは、宛先装置3から送信元装置2に返されるACKパケットをキャプチャして、キャプチャしたACKパケットからACK番号を取得し、受信時刻(タイムスタンプ)を付加して記憶手段1bに格納する。
【0018】
計算手段1cは、ACKパケットを待たずに送信された2つの連続するデータパケット(連続するデータを送信するデータパケット)を記憶手段1bから取得する。さらに、計算手段1cは、連続するデータパケットにおける2番目のデータパケットのシーケンス番号にデータ長を加算した値がACK番号となるACKパケットを記憶手段1bから取得する。そして、計算手段1cは、連続する2番目のデータパケットの受信時刻と取得されたACKパケットの受信時刻とから遅延時間を計算する。具体的には、計算手段1cは、2番目のデータパケットの受信時刻とACKの受信時刻との差を前記往復遅延時間とする。
【0019】
このような遅延時間計測装置1によれば、送信元装置2から宛先装置3に送られるデータパケットがデータ解析手段1aでキャプチャされ、データパケットのシーケンス番号、データ長、および受信時刻が記憶手段1bに格納される。また、宛先装置3から送信元装置2に返されるACKパケットがデータ解析手段1aでキャプチャされ、ACKパケットのACK番号と受信時刻とが記憶手段1bに格納される。その後、計算手段1cにより、ACKパケットを待たずに送信された2つの連続するデータパケットが記憶手段から取得される。また、計算手段1cにより、連続するデータパケットにおける2番目のデータパケットのシーケンス番号にデータ長を加算した値がACK番号となるACKパケットが記憶手段1bから取得される。そして、計算手段1cにより、連続する2番目のデータパケットの受信時刻と取得されたACKパケットの受信時刻とから往復遅延時間が計算される。
【0020】
このようにして、“Delayed ACK”を含まない遅延確認応答によってRTTを計測することができる。その結果、ネットワーク上で発生するパケット伝送の遅延が正確に反映されたRTTを得ることができる。
【0021】
ここで、遅延確認応答について詳しく説明する。遅延確認応答におけるACKの応答タイミングには、第1のパターンと第2のパターンとがある。
図2は、ACK応答タイミングの第1のパターンを示す図である。第1のパターンは、宛先装置3のデータを2回受信したときに、ACKを送信する場合である。図2の例では、送信元装置2から2つのデータパケット5a,5bが宛先装置3に送信されている。宛先装置3では、データパケット5aに対するACKは送信せず、データパケット5bに対するACKパケット5cを送信元装置2に送信する。
【0022】
データパケット5a,5bには、シーケンス番号(Seq)が含まれている。
シーケンス番号は、送信するデータパケットに付与されるユニークな番号である。データ長は、送信するデータのサイズ(例えば、バイト単位)である。シーケンス番号はコネクション確立時に初期値が割り当てられ、コネクション確立中にデータパケットを送信するごとに値が更新される。シーケンス番号の更新は、送信したデータのデータ長に相当する値を加算することで行われる。
【0023】
図2の例ではデータサイズが「10バイト」であり、データパケット5a送信時点でのシーケンス番号が「200」であるものとする。この場合、データパケット5aに付与されるシーケンス番号は「Seq=200」であり、データ長は「Len=10」である。
【0024】
送信元装置2は、ウィンドウサイズの範囲内においてデータを連続で(ACKを待たずに)送信できる。そこで送信元装置2は、データパケット5aのシーケンス番号「Seq=200」の値にデータ長「Len=10」の値を加算(Seq+Len)し、シーケンス番号を更新する。そして、送信元装置2は、データパケット5aに続けて更新されたシーケンス番号が付与されたデータパケット5bを送信する。その結果、データパケット5bのシーケンス番号は「Seq=210」となり、データ長は「Len=10」となる。
【0025】
宛先装置3では、データパケット5aとデータパケット5bを受信すると、データを2回受信したと認識し、ACKパケット5cを送信元装置2に応答する。ACKパケット5cには、ACK番号が含まれる。ACK番号は、次に送信元装置2から受け取りを期待するデータのシーケンス番号が示される。すなわち、ACK番号は、ACK番号で示されたデータの直前のデータまでのすべてのデータを正しく受信したことを示している。図2の例では、データパケット5aとデータパケット5bとを受信したことにより、200番目のデータから20バイト分のデータを受信したこととなる。そこで宛先装置3は、ACK番号「220」を付与したACKパケット5cを宛先装置3に送信する。
【0026】
このとき、送信元装置2がデータパケット5bを送信してから、ACKパケット5cを受信するまでの時間がRTTである。
図3は、ACK応答タイミングの第2のパターンを示す図である。第2のパターンは、“Delayed ACK”を応答する場合である。図3の例では、送信元装置2から1つのデータパケット6aが宛先装置3に送信されているが、そのデータパケット6aに続くデータ送信が行われていない。宛先装置3では、データパケット6aに対するACKは送信せず後続のパケットを待つが、所定の時間待ってもパケットが到着しない場合、データパケット6aに対するACKパケット6bを送信元装置2に送信する。このACKパケット6bによる確認応答は、Delayed ACKである。
【0027】
図3の例では、データパケット6aに付与されているシーケンス番号は「Seq=200」であり、データ長は「Len=10」である。宛先装置3は所定の遅延時間経過後、ACK番号「210」を付与したACKパケット6bを送信元装置2に送信する。
【0028】
ここで、送信元装置2付近で計測可能なRTTは、データパケット6aを送信してからACKパケット6bを受信するまでの時間である。しかし、この時間には“Delayed ACK”のための余分な遅延時間が含まれている。RTTとして本来計測したい値は、“Delayed ACK”による意図的な遅延時間を含まないデータ伝送による遅延時間である。すなわち、宛先装置3による意図的な遅延処理に基づく時間遅延が含まれていると、RTTがネットワークの通信品質を正しく表さなくなる。
【0029】
ここで、図2の第1のパターンと図3の第2のパターンとを比較すると、第1のパターンの宛先装置3はデータパケットを2回受信すると1つのACKパケットを返すが、第2のパターンはデータパケットを1回受信し、2回目が来ない場合にACKパケットを返す。ということは、データパケットを2回受信することをカウントし、その後のACKパケットにおけるACK番号=シーケンス番号(Seq)+データ長(Len)のときにRTTを計測するようにすればよい。
【0030】
図4は、遅延時間計測対象のパケット送受信パターンを示す図である。図4の例では、ACKパケット7aを受信した送信元装置2が、2つのデータパケット7b、7cを送信している。宛先装置3は、データパケット7c受信後にACKパケット7dを応答している。
【0031】
この場合、遅延時間計測装置1では、ACKパケット7aおよびACKパケット7dを挟んで、少なくとも2つのデータパケット7b,データパケット7cが送信されたことを確認する。すなわち、データパケット7cのシーケンス番号+データ長の値と、ACKパケットのACK番号の値とを比較し、一致することを確認した後、宛先ホストから前回送信されたACKパケット7a、および今回送信されたACKパケット7dのACK番号の差である20が、データパケット7cのデータ長(Len)である10よりも大きいことを確認する。この結果、少なくとも1個以上のデータパケットが7cの前に存在することが判断できる。すなわち、ACKパケット7dは“Delayed ACK”ではないことが判断できる。そして、遅延時間計測装置1は、2つ目のデータパケット7cが送信されてからACKパケット7dが応答されるまでの時間を計測し、RTTとする。
【0032】
このように、2つのデータパケットが連続で送信されていることを、RTT測定の条件とすることで、“Delayed ACK”によるACKパケットについては測定対象外となる。すなわち、“Delayed ACK”によるACKパケットとそれ以前のACKパケットとの間には1つのデータパケットしか送信されていない。そのため、計測対象から除外される。その結果、遅延時間計測装置1は、第1のパターンによるACKが応答された場合に限定してRTT計測を行うことができ、正確なRTT計測が可能となる。
【0033】
ところで、遅延時間計測装置1の機能は、ネットワーク上の通信を監視するモニタ装置に内蔵することができる。すなわち、モニタ装置内の遅延時間計測機能に図1に示した技術を適用することで、正確なRTT計測が可能となる。そこで、遅延時間計測機能を内蔵したモニタ装置の例を用いて、以下に実施の形態を詳細に説明する。
【0034】
[第1の実施の形態]
第1の実施の形態では、ネットワークから分岐させた信号(あるいはパケット)のモニタリングを行うモニタ装置に、遅延時間計測機能を実装するものとする。すなわち、伝送路からパケットのコピーを転送する機器を用いれば、遅延時間計測装置1はその機器経由でパケットを取得できる。ネットワーク上を伝送するパケットのコピーを生成するための機器としては、ポートミラーリング機能を有するスイッチングハブやネットワークタップがある。
【0035】
ポートミラーリング機能とは、送受信するフレームのコピーを指定した物理ポートへ送信する機能である。ここでフレームとは、OSI(Open System Interconnection)参照モデルにおけるデータリンク層で送信される信号の単位であり、IPパケットをカプセル化している。従って、コピーされたフレームから、データパケットやACKパケットを取り出すことができる。
【0036】
また、ネットワークタップは、伝送路上の信号を光スプリッタなどによって分岐させ、一方をモニタリング用のポートに出力するものである。このネットワークタップを用いれば、データロスなしにコピーされたパケットをモニタポートから出力できる。そこで、第1の実施の形態では、ネットワークタップを用いて信号を分岐させて、その信号をモニタリングすることとする。
【0037】
図5は、第1の実施の形態のシステム構成例を示す図である。モニタ装置100は、送信元ホスト21と宛先ホスト22との間の遅延時間を計測する。送信元ホスト21は、ネットワーク10を介して宛先ホスト22に接続されている。この時、送信元ホスト21とネットワーク10との間には、ネットワークタップ30が接続されている。ネットワークタップ30は、送信元ホスト21に対して送受信されるパケットのコピーを生成し、コピーされたパケットをモニタ装置100に送信する。
【0038】
なお、ネットワークタップ30とモニタ装置100とは、2本の通信ケーブル31,32で接続されている。一方の通信ケーブル31は、送信元ホスト21から宛先ホスト22への信号を分岐させた信号を送出するためのものである。もう一方の通信ケーブル32は、宛先ホスト22から送信元ホスト21への信号を分岐させた信号を送出するためのものである。モニタ装置100は、ネットワークタップ30から受け取ったパケットを解析し、往復遅延時間(RTT)を計測する。
【0039】
図6は、本実施の形態に用いるモニタ装置のハードウェア構成例を示す図である。モニタ装置100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス107を介してRAM(Random Access Memory)102、ハードディスクドライブ(HDD:Hard Disk Drive)103、入出力インタフェース104、およびLANインタフェース105,106が接続されている。
【0040】
RAM102は、モニタ装置100の主記憶装置として使用される。RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。HDD103は、モニタ装置100の二次記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【0041】
入出力インタフェース104は、RC232Cなどの通信インタフェースである。入出力インタフェース104には、コンソール端末11を接続することができる。システムの管理者は、コンソール端末11を用いてモニタ装置100に対するRTT計測開始の指示を入力したり、計測したRTTの値を表示したりすることができる。
【0042】
LANインタフェース105は、通信ケーブル31によってネットワークタップ30に接続されている。LANインタフェース105は、通信ケーブル31を介してネットワークタップ30で分岐された送信元ホスト21からの出力信号を取得する。LANインタフェース105は、入力した信号によって伝送されたフレームを認識し、フレーム内の情報をCPU101に渡す。
【0043】
LANインタフェース106は、通信ケーブル32によってネットワークタップ30に接続されている。LANインタフェース106は、通信ケーブル32を介してネットワークタップ30で分岐された送信元ホスト21への入力信号を取得する。LANインタフェース106は、入力した信号によって伝送されたフレームを認識し、フレーム内の情報をCPU101に渡す。
【0044】
なお、一般的な通信インタフェースは、自身宛のパケットのみを取得するが、モニタ装置100のLANインタフェース105,106ではモニタリングのために、宛先に関係なくすべてのパケットを取得する。また、モニタ装置100に、管理用のLANインタフェースを追加することもできる。その場合、管理用のLANインタフェースに対してネットワーク経由で管理用のコンピュータを接続する。システムの管理者は、管理用のコンピュータを操作してモニタ装置100に対するRTT計測指示を入力したり、および計測されたRTTを管理用のコンピュータにコピーすることができる。
【0045】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
次に、モニタ装置100の有する機能を具体的に説明する。
【0046】
図7は、モニタ装置の機能を示すブロック図である。モニタ装置100は、パケットキャプチャ部110とRTT計測部120とを有している。
パケットキャプチャ部110は、ネットワークタップ30から取得した信号からパケットを取得する。そのために、パケットキャプチャ部110は、入力部111とパケット情報取得部112とを有している。入力部111は、送信されたデータパケット、あるいは返信されたACKパケットを取り込む。パケット情報取得部112は、パケットからIPヘッダとTCPヘッダ(以下、IPヘッダとTCPヘッダとを纏めてヘッダ情報と呼ぶ)を取り出し、キャプチャした時間(タイムスタンプ)を付けてRTT計測部120へ渡す。
【0047】
RTT計測部120は、パケットキャプチャ部110から渡された情報に基づいて遅延時間を計測する。そのために、RTT計測部120は、データ処理部121、ACK処理部123、データ/ACK用メモリ124、演算処理部125、およびRTT計測値データベース(DB)126を有している。
【0048】
データ処理部121は、データパケットのヘッダ情報からデータを関係付けし、データ/ACK用メモリ124へ保存する。ACK処理部123は、ACKパケットのヘッダ情報からデータを関係付けし、データ/ACK用メモリ124へ保存する。
【0049】
データ/ACK用メモリ124は、データ処理部121の解析結果を記憶する。また、データ/ACK用メモリ124は、ACK処理部123の解析結果を記憶する。例えば、RAM102の記憶領域の一部がデータ/ACK用メモリ124として使用される。具体的には、データ処理部121やACK処理部123の解析結果は、データ/ACK用メモリ124内のTCPセッションテーブル124aに設定される。TCPセッションテーブル124aは、キャプチャしたパケットに基づいて認識できるTCPセッションの情報を管理するデータテーブルである。
【0050】
演算処理部125は、データ/ACK用メモリ124からデータを取り出し、遅延時間計測の判定とRTT計測値を算出する。
RTT計測値DB126は、RTT計測値を格納する。例えば、HDD103の記憶領域の一部がRTT計測値DB126として使用される。
【0051】
図8は、TCPセッションテーブルを示す図である。TCPセッションテーブル124aには、TCPセッションID、送信元アドレス、複数のデータパケット、および前回ACKの各欄が設けられている。
【0052】
TCPセッションIDの欄には、送信元ホスト21と宛先ホスト22との間のTCPセッションを一意に識別するための識別情報(TCPセッションID)が設定される。TCPセッションIDは、TCP/IPのパケットの送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号の組から一意に決定される値である。なお、送信元IPアドレスと宛先IPアドレス、および送信元ポート番号と宛先ポート番号がそれぞれ相互に入れ替わっても、同じセッションIDが得られる。
【0053】
送信元IPアドレスの欄には、パケットの送信元IPアドレス(SA)が設定される。
複数のデータパケットの欄には、同一セッションにおいて対応する送信元IPアドレスから送信されたデータパケットそれぞれに関する情報が設定される。該当セッションで検出されたデータパケットの順に、検出されたデータパケットに関する情報が、第1のデータパケット情報(DP1)、第2のデータパケット情報(DP2)、・・・として設定される。設定されるデータパケットの情報は、受信時刻(Time)、シーケンス番号(Seq)、およびデータ長(Len)である。
【0054】
前回ACKの欄には、TCPセッション内の通信で最後に検出されたACKパケットのACK番号が設定される。
図9は、RTT計測値DBのデータ構造例を示す図である。RTT計測値DB126には、TCP統計テーブル126aが格納されている。TCP統計テーブル126aには、TCPセッションID、送信元ホストIPアドレス、RTT計測値の積算値を表すRTT総和、RTT二乗和、RTT計測回数の欄が設けられている。
【0055】
TCPセッションIDの欄には、検出されたセッションのTCPセッションIDが設定される。
送信元IPアドレスの欄には、対応するセッションの内で検出されたパケットの送信元のIPアドレスが設定される。
【0056】
RTT総和の欄には、対応するセッションの送信元IPアドレスで示されるノードから送信されたデータパケットと、そのデータパケットに対するACKパケットとに基づいて計測されたRTTの総和が設定される。
【0057】
RTT二乗和の欄には、対応するセッションの送信元IPアドレスで示されるノードから送信されたデータパケットと、そのデータパケットに対するACKパケットとに基づいて計測されたRTTそれぞれを二乗した値の総和が設定される。
【0058】
RTT計測回数の欄には、対応するセッションの送信元IPアドレスで示されるノードから送信されたデータパケットと、そのデータパケットに対するACKパケットとに基づいて計測されたRTTの数が設定される。
【0059】
図10は、パケットの構造を示す図である。TCP/IPのパケット40には、IPヘッダ41とTCPヘッダ42とが含まれている。IPヘッダ41は、ネットワーク層のプロトコルであるIPに従った通信のための情報である。TCPヘッダ42は、トランスポート層のプロトコルであるTCPに従った通信のための情報である。
【0060】
図11は、IPヘッダの構造を示す図である。IPヘッダ41には、バージョン(Version)、ヘッダ長(IHL)、サービスタイプ(Type of Service)、パケット長(Total Length)、識別子(Identification)、フラグ(Flags)、フラグメントオフセット(Fragment Offset)、生存時間(Time to Live)、プロトコル(Protocol)、ヘッダチェックサム(Header Checksum)、送信元アドレス(Source Address)、宛先アドレス(Destination Address)、オプション(Options)、およびパディング(Padding)のフィールドが設けられている。
【0061】
バージョンは、IPのバージョンを表す。ヘッダ長は、IPヘッダの長さを4バイト単位で示す。サービスタイプは、IPサービスの品質を表す。パケット長は、 IPヘッダ41にIPデータを加えたパケット全体の長さを表す。識別子は、IPパケットを識別するためのユニークな値である。フラグは、パケットの分割に関する制御情報である。フラグメントオフセットは、分割されたデータが、分割前のデータの先頭から何ビット目から始まるのかを表す。生存時間は、IPデータグラムが通過できるルータの数を表す。プロトコルは、IPパケットに格納されたデータのプロトコルを表す(TCPは「6」である)。ヘッダチェックサムは、IPヘッダが壊れていないか検査するための値が入れられる。送信元IPアドレスは、パケットの送信元のIPアドレスである(データパケットであれば送信元ホスト21が送信元であり、ACKパケットであれば宛先ホスト22が送信元である)。宛先IPアドレスは、パケットの宛先のIPアドレスである(データパケットであれば宛先ホスト22が宛先であり、ACKパケットであれば送信元ホスト21が宛先である)。オプションは、テストなどで使用される領域であり、パケットの送信元において送信時刻を示すタイムスタンプを設定することができる。パディングは、オプションを付加したことでヘッダ長が32ビットの整数倍にならない場合に、ヘッダ長を32ビットの整数倍にするための穴埋め(パディング)のデータである。
【0062】
データ処理部121は、このようなIPヘッダ41を有するデータパケットから送信元IPアドレスを取得して、TCPセッションテーブル124aに設定する。同様に、ACK処理部123は、このようなIPヘッダ41を有するACKパケットから送信元IPアドレスを取得して、TCPセッションテーブル124aに設定する。
【0063】
図12は、TCPヘッダの構造を示す図である。TCPヘッダ42には、送信元ポート番号(source port number)、宛先ポート番号(destination port number)、シーケンス番号(sequence number)、ACK番号(acknowledgement number)、ヘッダ長(header length)、予約領域(Reserved)、コードビット(URG,ACK,PSH,RST,SYN,FIN)、ウィンドウサイズ(windows size)、チェックサム(TCP checksum)、緊急ポインタ(urgent pointer)、およびオプション(options)が設けられている。
【0064】
送信元ポート番号は、パケットを送信したプログラムを示す番号である。宛先ポート番号は、パケットを受信すべきプログラムを示す番号である。シーケンス番号は、データパケットの送信時に送信元ホスト21で付与される。ACK番号は、ACKパケットの送信時に宛先ホスト22で付与され、次に受信することを期待するデータパケットのシーケンス番号を示す。ヘッダ長は、TCPヘッダ42の長さを示している。予約領域は、将来の拡張のために用意されたフィールドである。
【0065】
コードビットは、各種制御用のフラグである。URGが「1」の場合、緊急に処理すべきデータが含まれていることを示す。ACKが「1」の場合、応答確認番号が使用されていることを示す。PSHが「1」の場合、TCPから上位のアプリケーションに対して、受け取ったデータをすぐに配送することを示す。RSTが「1」の場合、なんらかの要因で通信不良が起き制御不能になったことを示す。SYNが「1」の場合、このTCPヘッダに示すシーケンス番号で、シーケンス番号の初期化を行うことを示す。FINが「1」の場合、送信側が送るデータが終了したことを示す。
【0066】
ウィンドウサイズは、ACK番号で示したシーケンス番号からどの程度のデータを受信可能なのかを示す。チェックサムは、TCPヘッダとデータが壊れていないか検査するための値が入れられる。緊急ポインタは、URGが「1」のときに有効となり、緊急を要するデータの格納場所を示すポインタである。オプションには、任意の情報が設定される。
【0067】
データ処理部121は、このようなTCPヘッダ42を有するデータパケットからシーケンス番号を取得して、TCPセッションテーブル124aに設定する。また、データ処理部121は、データパケットに含まれているデータを取得し、そのデータの長さをデータ長としてTCPセッションテーブル124aに設定する。さらに、データ処理部121は、データパケットに対応するTCPセッションIDを計算し、設定すると共に、データパケットを受信した時刻を設定する。
【0068】
ACK処理部123は、このようなTCPヘッダ42を有するACKパケットからACK番号を取得して、TCPセッションテーブル124aに設定する。また、ACK処理部123は、該当するTCPセッションIDのところに、ACKパケットを受信した時刻をキャプチャ時刻の欄に設定する。
【0069】
次に、RTTを計測する手順を説明する。
図13は、RTT計測処理の手順を示すフローチャートである。まず、データ処理部121とACK処理部123は、それぞれ新たなパケットを受信したか否かを判断する(ステップS1)、パケットを受信していなければ、パケットの受信を待つ(ステップS1を繰り返す)。パケットを受信した場合(ステップS1でYESの場合)、データ処理部121とACK処理部123はそれぞれ、受信したTCP/IPパケットの送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号の組からTCPセッションIDを作成する(ステップS2)。TCP/IPのセッションにおいては、同一セッションであっても、IPアドレスとポート番号の組が送信元の場合もあり、宛先の場合もある。そのため、送信元と宛先とに対するIPアドレスとポート番号との組みが入れ替わっても、これらを同一とみなす必要がある。本実施形態では、TCPセッションIDは受信したTCP/IPパケットが同一のセッション(コネクション)に属するか判定するために用いる識別子で、送信元と宛先とのそれぞれのIPアドレスとポート番号とが逆転しても同一のセッションと判断できる値である。
【0070】
データ処理部121とACK処理部123はそれぞれ、受信したパケットのTCPセッションIDと送信元IPアドレスとに対応するレコードがTCPセッションテーブル124aに存在するか否かを判断する(ステップS3)。該当するレコードが存在しない場合(ステップS3でNO)、データ処理部121が新たなTCPセッションIDと送信元IPアドレスとを持つレコードをTCPセッションテーブル124aに登録する(ステップS4)。この処理は、TCPセッションを確立するためのパケットを受信したときに実行されることとなる。例えば、送信元ホスト21から宛先ホスト22に送信されたセッション確立を要求するパケットを検出したものとする。この場合、検出したパケットに応じたTCPセッションIDと送信元IPアドレス(送信元ホスト21のIPアドレス)に対応するレコードが、TCPセッションテーブル124aに追加される。次に、送信元ホスト21からのセッションの確立要求する宛先ホスト22からの応答を示すパケットが検出されたものとする。すると、検出したパケットに応じたTCPセッションIDと送信元IPアドレス(宛先ホスト22のIPアドレス)に対応するレコードが、TCPセッションテーブル124aに追加される。
【0071】
ステップS3の処理において該当するレコードが存在した場合(ステップS3でYES)、データ処理部121とACK処理部123はそれぞれ、受信したパケットのデータ長(Len)が0以上か否かを判断する(ステップS5)。データ長(Len)が0以上であれば(ステップS5でYES)、データ処理部121は、TCPセッションテーブル124aの該当レコードにデータパケットの受信時刻(Time)、シーケンス番号(Seq)、およびデータ長(Len)をDPx(x=1,2,..N)として記録する(ステップS6)。ここで、xは、該当するレコード内のデータパケット情報の順番を示す数字である。また、Nは自然数である。なお、1レコードあたりデータパケットを記録する最大数であるNは任意の数でよく、ここではNは有限であると想定する。なお有限である場合で、ステップS6において記録する領域がない場合(既にx=Nのデータパケット情報がある場合)は記録しない。
【0072】
次にデータ処理部121は、ACKタ処理部123は、受信したパケットの宛先IPアドレスをDAとする(ステップS7)。
ACK処理部123は受信しパケットと同じTCPセッションIDが設定され、受信したパケットの宛先IPアドレス(DA)が送信元IPアドレス(SA)として設定されたレコードを、TCPセッションテーブル124aから抽出する。そして、ACK処理部123は、シーケンス番号(Seq)にデータ長(Len)を加算した値が、受信したパケットのACK番号(ACK)に一致するデータパケット情報(DP)があるか否か(DA=SAかつACK=Seq+Len)を判断する(ステップS8)。
【0073】
ステップS8で該当するデータパケット情報が検出された場合(ステップ8でYES)、ACKに対応したデータパケットが、モニタ装置100で既に受信されていることを意味する。この場合、受信したパケットが単一のデータパケットに対するACKなのか、複数のデータパケットに対するACKかを判断する必要がある。そのためACK処理部123は、受信したパケットのACKと検出しレコードに記録されている前回ACKとの差分が、検出したデータパケット情報のデータ長(Len)より大きいか否かを判断する(ステップS9)。
【0074】
受信したパケットのACKと検出しレコードに記録されている前回ACKとの差分がデータ長より大きければ(ステップS9でYES)、該当するデータパケット情報が記録する前に連続する他のデータパケットを受信していることが分かり、RTTを正確に計測できる第1のパターンであると判断できる。そこでACK処理部123は、パケットの受信時刻から、ステップS8の判断で該当したデータパケット情報に含まれる「Time」を減算した値をRTTとする(ステップS10)。
【0075】
RTTを算出したACK処理部123は、算出したRTTに基づいてRTT計測値テーブル126aを更新する(ステップS11)。具体的には、ACK処理部123は、ステップS8で抽出したレコードのTCPセッションIDと送信元IPアドレスとを有するレコードを、TCP計測値テーブル126aから検索する。該当するレコードが見つからない場合、ACK処理部123は、TCPセッションIDと送信元IPアドレスとを設定した新たなレコードをRTT計測値テーブル126aに追加する。新たに追加されたレコードのRTT総和の初期値は「0」、RTT二乗和の初期値は「0」、RTT計測回数の初期値は「0」である。そして、ACK処理部123は、検出したかあるいは新たに途追加したレコードのRTT総和に対して、ステップS10で算出したRTTの値を加算する。また、ACK処理部123は、該当するレコードのRTT二乗和に対して、ステップS10で算出したRTTを二乗した値を加算する。さらに、ACK処理部123は、該当するレコードのRTT測定回数に1を加算(インクリメント)する。
【0076】
なお、ステップS9で該当するデータパケット情報が検出されなかった場合(ステップS9でNO)、RTTが正確に計測できない第2のパターンであると判断できる。そこで、ACK処理部123は、受信したパケットのACKに対応するデータパケット情報(シーケンス番号にデータ長を加算した値が受信したパケットのACK番号に等しい)、およびそのデータパケット情報よりも前に登録されたデータパケット情報を、ステップS8で検出したTCPセッションテーブル124aおレコードから消去する(ステップ11)。
【0077】
一方、ステップS8において該当するデータパケット情報が検出できなかった場合、何らかの理由でデータパケットを計測装置が受信できず、ACKパケットだけを受信したとみなせる。この場合、ACK処理部123は、受信しパケットと同じTCPセッションIDが設定され、受信したパケットの宛先IPアドレス(DA)が送信元IPアドレス(SA)として設定されたレコードを、TCPセッションテーブル124aから抽出する。そして、ACK処理部123は、シーケンス番号(Seq)にデータ長(Len)を加算した値が、受信したパケットのACK番号(ACK)未満となるデータパケット情報(DP)があるか否か(DA=SAかつACK>Seq+Len)を判断する(ステップS13)。
【0078】
ACK処理部123は、ステップS13の判断の結果、該当するレコードおよびデータパケット情報がある場合、該当レコード内の該当データパケット情報よりも前に登録されたデータパケット情報を、TCPセッションテーブル124aから消去する(ステップS14)。
【0079】
ステップS12,S14に示したように、RTTの計測に不要となったデータパケット情報を適宜削除することで、データパケット情報を記録する有限の領域を再利用できる。
ACK処理部123は、ステップS11S12,S14の処理後に、受信しパケットと同じTCPセッションIDが設定され、受信したパケットの宛先IPアドレス(DA)が送信元IPアドレス(SA)として設定されたレコードの前回ACKを、受信したパケットのACK番号を更新する(ステップS15)。その後、処理がステップS1に進められる。
【0080】
次に、第1のパターンと第2のパターンとのACKが混在する場合に、第1のパターンのみを抽出してRTT測定を行う具体例について説明する。
図14は、第1のパターンと第2のパターンとのACKが混在する場合のシーケンス図である。図14の例では、宛先ホスト22からACKパケット51(ACK番号「200」を受け取った送信元ホスト21が、データパケット52(シーケンス番号「200」、データ長「10」)を宛先ホスト22に送信している。宛先ホスト22では、データパケット52に応答してACKパケット53(ACK番号「210」)を送信元ホスト21に送信している。
【0081】
送信元ホスト21は、ACKパケット53を受信した後に、データパケット54(シーケンス番号210,データ長「10」)とデータパケット55(シーケンス番号220,データ長「10」)とを続けて(ACKの受信を待たずに)送信している。宛先ホスト22では、2つのデータパケット54,55に応答して、1つのACKパケット56(ACK番号「230」)を送信元ホスト21に送信している。
【0082】
ここで、ACKパケット53は、1つのデータパケット52に対するACKである。すると、ACKパケット53は、第2のパターンによるACKである。また、ACKパケット56は、2つの連続するデータパケット54,55に対するACKである。すると、ACKパケット56は、第1のパターンによるACKである。
【0083】
このような各パケットは、送信元ホスト21の手前に配置されたネットワークタップ30によって分岐され、モニタ装置100に送られる。モニタ装置100では、まず、2つの連続するデータパケットの検出が行われる。すると、データパケット54,55が検出される。データパケット52については、直前のデータパケットに対するACKパケット51が存在し、自身に対するACKパケット53が存在することから、他のデータパケットとの連続性はない。そのため、データパケット52は検出されない。
【0084】
次にモニタ装置100は、検出した2つのデータパケット54,55のうちの2つめのデータパケット55のシーケンス番号にデータ長を加算した値をACK番号とするACKパケット56を検出する。そして、モニタ装置100は、データパケット55が送信されてからACKパケット56が応答されるまでの時間をRTTとして計測する。計測されたRTTは、必ず第1のパターンによる遅延確認応答によって計測されたものであるため、正確にネットワーク上のデータ遅延を表すものである。すなわち、計測されたRTTには“Delayed ACK”による遅延時間が含まれていない。
【0085】
ところで、図14では、説明を分かりやすくするために、第1のパターンと第2のパターンとが時間的に重複していない例を示している。しかし、データ転送時のウィンドウサイズが大きいと、3つ以上のデータパケットが連続して送信されることもある。このような場合、第1のパターンと第2のパターンとが時間的に重複して検出されることもある。
【0086】
図15は、第1のパターンと第2のパターンとが時間的に重複した場合のシーケンス図である。図15の例では、宛先ホスト22からACKパケット61(ACK番号「200」を受け取った送信元ホスト21が、データパケット62(シーケンス番号「200」、データ長「10」)、データパケット63(シーケンス番号210,データ長「10」)とデータパケット64(シーケンス番号220,データ長「10」)を続けて(ACKの受信を待たずに)送信している。
【0087】
宛先ホスト22では、データパケット62に応答してACKパケット65(ACK番号「210」)を送信元ホスト21に送信している。また、宛先ホスト22では、2つのデータパケット63,64に応答して、1つのACKパケット66(ACK番号「230」)を送信元ホスト21に送信している。
【0088】
ここで、ACKパケット65は、1つのデータパケット62に対するACKである。すると、ACKパケット65は、第2のパターンによるACKである。また、ACKパケット66は、2つの連続するデータパケット63,64に対するACKである。すると、ACKパケット66は、第1のパターンによるACKである。
【0089】
モニタ装置100は、これらのパケットを送信元ホスト21の手前でキャプチャする。モニタ装置100では、まず、2つの連続するデータパケットの検出が行われる。すると、データパケット63,64が検出される。データパケット62については、直前のデータパケットに対するACKパケット61が存在し、自身に対するACKパケット65が存在することから、他のデータパケットとの連続性はないと判断される。すなわち、時間的にデータパケット62とデータパケット63とが連続していても、1つめのデータパケット62に対するACKパケット65が存在する場合、データパケット62とデータパケット63とを、連続する2つのデータパケットであるとは判断しない。そのため、データパケット62は検出されない。
【0090】
次にモニタ装置100は、検出した2つのデータパケット63,64のうちの2つめのデータパケット64のシーケンス番号にデータ長を加算した値をACK番号とするACKパケット66を検出する。そして、モニタ装置100は、データパケット64が送信されてからACKパケット66が応答されるまでの時間をRTTとして計測する。
【0091】
計測されたRTTは、必ず第1のパターンによる遅延確認応答によって計測されたものであるため、正確にネットワーク上のデータ遅延を表すものである。すなわち、計測されたRTTには“Delayed ACK”による遅延時間が含まれていない。このように、途中に他のACKパケットが割り込んでも正確なRTTを計測できる。
【0092】
[第2の実施の形態]
第2の実施の形態は、ネットワークタップを使用せずに、モニタ装置を送信元ホストと宛先ホストとの間に配置したものである。
【0093】
図16は、第2の実施の形態のシステム構成例を示す図である。第2の実施の形態では、送信元ホスト21とネットワーク10との間にモニタ装置100aが接続されている。モニタ装置100aは、送信元ホスト21と宛先ホスト22との間で送受信されるパケットをキャプチャし、RTTを計測する。
【0094】
図17は、第2の実施の形態に係るモニタ装置の機能を示すブロック図である。第2の実施の形態にかかるモニタ装置100aの機能は、図7に示した第1の実施の形態に係るRTT計測100とほぼ同じである。そこで、図17のモニタ装置100a内のRTT計測100と同じ機能には図7と同じ符号を付し、説明を省略する。
【0095】
第2の実施の形態におけるモニタ装置100aは、パケットキャプチャ部110a内に入力部113と出力部114とを備えている。入力部113は、送信元ホスト21または宛先ホスト22から送られたパケットをパケット情報取得部112aに入力する。出力部114は、パケット情報取得部112aを介して入力されたパケットを取得し、そのパケットの宛先に応じて、パケットを送信元ホスト21または宛先ホスト22に送信する。
【0096】
パケット情報取得部112aは、入力部113を介して入力されたパケットのコピーを生成し、RTT計測部120に渡す。そして、パケット情報取得部112aは、パケットを出力部114に渡す。
【0097】
このようなモニタ装置100aにより、ネットワークタップなどの信号を分岐させる機器を介さずにパケットをキャプチャし、RTTの計測が可能となる。
なお、上記の第1、第2の実施の形態では、送信元ホスト21から宛先装置22に送られるデータパケットをキャプチャしているが、キャプチャするのではなく、パケットの各種情報を一旦ファイルなどの形式でデータ記録装置に記録しておくこともできる。この場合、モニタ装置100は、パケットの各種情報を記憶データ記憶装置からデータ読み取り、RTTを計測することができる。
【0098】
また、上記の各実施の形態に示したモニタ装置の処理機能は、コンピュータによって実現することができる。その場合、モニタ装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disc)などがある。
【0099】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0100】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0101】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
【図面の簡単な説明】
【0102】
【図1】実施の形態の概要を示す図である。
【図2】ACK応答タイミングの第1のパターンを示す図である。
【図3】ACK応答タイミングの第2のパターンを示す図である。
【図4】遅延時間計測対象のパケット送受信パターンを示す図である。
【図5】第1の実施の形態のシステム構成例を示す図である。
【図6】本実施の形態に用いるモニタ装置のハードウェア構成例を示す図である。
【図7】モニタ装置の機能を示すブロック図である。
【図8】TCPセッションテーブルを示す図である。
【図9】RTT計測値DBのデータ構造例を示す図である。
【図10】パケットの構造を示す図である。
【図11】IPヘッダの構造を示す図である。
【図12】TCPヘッダの構造を示す図である。
【図13】RTT計測処理の手順を示すフローチャートである。
【図14】第1のパターンと第2のパターンとのACKが混在する場合のシーケンス図である。
【図15】第1のパターンと第2のパターンとが時間的に重複した場合のシーケンス図である。
【図16】第2の実施の形態のシステム構成例を示す図である。
【図17】第2の実施の形態に係るモニタ装置の機能を示すブロック図である。
【図18】TCPにおけるパケット送受信の基本動作例を示す図である。
【符号の説明】
【0103】
1 遅延時間計測装置
1a データ解析手段
1b 記憶手段
1c 計算手段
2 送信元装置
3 宛先装置
4 ネットワーク
【技術分野】
【0001】
本発明はデータ送信から確認応答があるまでの往復遅延時間を計測する遅延時間計測装置、遅延時間計測プログラム、および遅延時間計測方法に関し、特に遅延確認応答が行われる場合の往復遅延時間を計測する遅延時間計測装置、遅延時間計測プログラム、および遅延時間計測方法に関する。
【背景技術】
【0002】
ネットワークを介したデータ通信のプロトコルには、データを受信した装置から確認応答を返すものがある。そのような通信プロトコルの1つにTCP/IP(Transmission Control Protocol/Internet Protocol)がある。TCP/IPでは、ネットワーク層のプロトコルはIPであり、トランスポート層のプロトコルはTCPまたはUDP(User Datagram Protocol)である。ここで、トランスポート層のプロトコルとしてTCPを用いたときに、受信したデータの確認応答が行われる。TCPでは、送信したパケットに対して必ず確認のための応答を送信することによって信頼性のある通信を実現している。
【0003】
図18は、TCPにおけるパケット送受信の基本動作例を示す図である。図18には、送信元ホスト911から送信されたデータに対する確認応答を宛先ホスト912が返す例が示されている。
【0004】
まず、送信元ホスト911は、送信対象のデータをTCPパケットに載せ(送信対象のデータにTCPヘッダを付加する)、それをIPパケットに載せて宛先ホスト912に送信する。IPパケットを受信した宛先ホスト912では、IPパケットからTCPパケットを取り出し、さらにTCPパケットからデータを取り出す。この際、宛先ホスト912は、取り出したデータを上位アプリケーションに届けると共に、送信元ホスト911に対して自動的に確認応答を返信する。確認応答の返信は、上位アプリケーションの指示とは関係なく、TCPのプロトコル・スタック内で自動的に行われる。
【0005】
この確認応答のことをTCPでは“Acknowledge(承認)”と呼ぶ(以下ではACKと略記する)。TCPのパケットを受信した側では、データを受け取ったことを表すため、ACKを返送する。送信元ホスト911では、このACKを受け取ることでデータ送信が完了したと認識し、次の動作に移る。一方、送信元ホスト911は、しばらく待ってもACKが受信できなければ、送信が失敗したものとみなしデータの再送動作を行う。
【0006】
このように、データ送信が行われるとACKが返される。そこで、ネットワーク上でのTCPによるデータ送信とACKとの通信パケットを監視することで、データの往復遅延時間(RTT: Round Trip Time)を計測することができる。つまりデータを送信し、そのデータを受信した証にACKを送り返されるので、その間の時間を計測すれば、それがRTTとなる。RTTを計測することで、ネットワークの品質などを把握することができる。
【0007】
なお、図18に示したような基本動作では、送信元ホスト911は、送信データに対する宛先ホスト912からのACKを受け取ってから、次のデータ送信を行う。すると、データ送信間隔があいてしまい、データ送信効率が低下する。そこで、送信元ホスト911においてACKを待たずに連続してデータを送信することが行われる。送信元ホスト911がACKを待たずに送信できるデータの大きさは、ウィンドウサイズと呼ばれる。送信元ホスト911が宛先ホスト912に送信する場合のウィンドウサイズは、宛先ホスト912から送信元ホスト911に通知される。
【0008】
また、データを受信した宛先ホスト912がすぐにACKを返すとウィンドウサイズとして小さな値を指定することがある。これは受信したばかりのデータで受信用のバッファがいっぱいになってしまうためである。小さなウィンドウサイズを通知された送信元ホスト911がその大きさでデータを送り、ACKの受信を待つとネットワークの利用効率が悪くなる。そこで、宛先ホスト912ではデータを受信してもすぐにACKを返さずに、所定の時間待ってからACKを返す方法が採られる。これを遅延確認応答という。
【0009】
具体的には、遅延確認応答では以下のような処理をしている。
・データを2回受信するまで確認応答をしない(第1のパターン)。
・そうでない場合は確認応答を最大で0.5秒間遅延させる(第2のパターン)。
【0010】
なお、第2のパターンで遅延させたACKのことをDelayed ACKと呼ぶ。また、第1のパターンでは、2つのデータに対して1つのACKを返すこととなる。これは、ACKは送信された全てのデータについて返ってこなくてもよいという既定を利用している。すなわち、ACKには、次に送信元ホスト911が送信することを期待するデータのシーケンス番号が含まれている。送信元ホスト911では、ACKに示されるシーケンス番号によって、そのシーケンス番号より前のすべてのデータが宛先ホスト912に正しく届いているものと判断する。そのため、第1のパターンの遅延確認応答ではこのことを利用して、始めから全てのデータにはACKを返さず、2個に1個のACKを返す。これにより、流通するパケットが減りネットワークの使用効率が良くなる。
【特許文献1】特開2001−111618号公報
【特許文献2】特開2002−374301号公報
【発明の開示】
【発明が解決しようとする課題】
【0011】
しかし、従来の遅延確認応答を行うデータ通信のRTT計測では、第1のパターンによるACKなのか、第2のパターンによるACKなのかを判別することができなかった。第2のパターンの場合、計測したRTTには、ACKを意図的に遅らせた“Delayed ACK”の時間が含まれる。そのため、第2のパターンによって計測されたRTTは、ネットワーク上のデータ送受信に要する遅延時間を正確に表すものではない。このように、計測したRTTに第2のパターンの“Delayed ACK”による遅延時間が含まれる可能性があることにより、RTTの信頼性が低下していた(正確でない可能性があった)。
【0012】
本発明はこのような点に鑑みてなされたものであり、“Delayed ACK”を含まないACKのみを選択して遅延時間を計算することができる遅延時間計測装置、遅延時間計測プログラム、および遅延時間計測方法を提供することを目的とする。
【課題を解決するための手段】
【0013】
上記課題を解決するために、以下のようなデータ送信から確認応答があるまでの往復遅延時間を計測する遅延時間計測装置が提供される。
遅延時間計測装置は、データ解析手段、記憶手段、および計算手段を有する。データ解析手段は、送信元装置から宛先装置に送られるデータパケットをキャプチャして、キャプチャしたデータパケットのシーケンス番号とデータ長とを取得し、受信時刻を付加して記憶手段に格納すると共に、宛先装置から送信元装置に返されるACKパケットをキャプチャして、キャプチャしたACKパケットからACK番号を取得し、受信時刻を付加して記憶手段に格納する。計算手段は、ACKパケットを待たずに送信された2つの連続するデータパケットを記憶手段から取得し、連続するデータパケットにおける2番目のデータパケットのシーケンス番号にデータ長を加算した値がACK番号となるACKパケットを記憶手段から取得し、連続する2番目のデータパケットの受信時刻と取得されたACKパケットの受信時刻とから往復遅延時間を計算する。
【0014】
また、上記遅延時間計測装置と同様の機能をコンピュータに実行させる遅延時間計測プログラムが提供される。さらに、上記遅延時間計測装置と同様の処理をコンピュータで行う遅延時間計測方法が提供される。
【発明の効果】
【0015】
上記遅延時間計測装置、遅延時間計測プログラム、および遅延時間計測方法では、“Delayed ACK”を含まないACKのみを選択して遅延時間を計算することができる。
【発明を実施するための最良の形態】
【0016】
以下、本発明の実施の形態を図面を参照して説明する。
図1は、実施の形態の概要を示す図である。遅延時間計測装置1は、送信元装置2によるデータ送信から、宛先装置3からの確認応答があるまでの往復遅延時間を計測するものである。遅延時間計測装置1は、データ解析手段1a、記憶手段1b、および計算手段1cを有している。
【0017】
データ解析手段1aは、送信元装置2から宛先装置3に送られるデータパケットをキャプチャして、キャプチャしたデータパケットのシーケンス番号とデータ長とを取得し、受信時刻(タイムスタンプ)を付加して記憶手段1bに格納する。なお、データ長は、IPヘッダ(後述する図11参照)内にあるTotal Lengthの値からIPヘッダの長さを表すIHLの値と、TCPヘッダ(後述する図12参照)内にあるheader lengthの値をそれぞれ差し引いた値である。また、データ解析手段1aは、宛先装置3から送信元装置2に返されるACKパケットをキャプチャして、キャプチャしたACKパケットからACK番号を取得し、受信時刻(タイムスタンプ)を付加して記憶手段1bに格納する。
【0018】
計算手段1cは、ACKパケットを待たずに送信された2つの連続するデータパケット(連続するデータを送信するデータパケット)を記憶手段1bから取得する。さらに、計算手段1cは、連続するデータパケットにおける2番目のデータパケットのシーケンス番号にデータ長を加算した値がACK番号となるACKパケットを記憶手段1bから取得する。そして、計算手段1cは、連続する2番目のデータパケットの受信時刻と取得されたACKパケットの受信時刻とから遅延時間を計算する。具体的には、計算手段1cは、2番目のデータパケットの受信時刻とACKの受信時刻との差を前記往復遅延時間とする。
【0019】
このような遅延時間計測装置1によれば、送信元装置2から宛先装置3に送られるデータパケットがデータ解析手段1aでキャプチャされ、データパケットのシーケンス番号、データ長、および受信時刻が記憶手段1bに格納される。また、宛先装置3から送信元装置2に返されるACKパケットがデータ解析手段1aでキャプチャされ、ACKパケットのACK番号と受信時刻とが記憶手段1bに格納される。その後、計算手段1cにより、ACKパケットを待たずに送信された2つの連続するデータパケットが記憶手段から取得される。また、計算手段1cにより、連続するデータパケットにおける2番目のデータパケットのシーケンス番号にデータ長を加算した値がACK番号となるACKパケットが記憶手段1bから取得される。そして、計算手段1cにより、連続する2番目のデータパケットの受信時刻と取得されたACKパケットの受信時刻とから往復遅延時間が計算される。
【0020】
このようにして、“Delayed ACK”を含まない遅延確認応答によってRTTを計測することができる。その結果、ネットワーク上で発生するパケット伝送の遅延が正確に反映されたRTTを得ることができる。
【0021】
ここで、遅延確認応答について詳しく説明する。遅延確認応答におけるACKの応答タイミングには、第1のパターンと第2のパターンとがある。
図2は、ACK応答タイミングの第1のパターンを示す図である。第1のパターンは、宛先装置3のデータを2回受信したときに、ACKを送信する場合である。図2の例では、送信元装置2から2つのデータパケット5a,5bが宛先装置3に送信されている。宛先装置3では、データパケット5aに対するACKは送信せず、データパケット5bに対するACKパケット5cを送信元装置2に送信する。
【0022】
データパケット5a,5bには、シーケンス番号(Seq)が含まれている。
シーケンス番号は、送信するデータパケットに付与されるユニークな番号である。データ長は、送信するデータのサイズ(例えば、バイト単位)である。シーケンス番号はコネクション確立時に初期値が割り当てられ、コネクション確立中にデータパケットを送信するごとに値が更新される。シーケンス番号の更新は、送信したデータのデータ長に相当する値を加算することで行われる。
【0023】
図2の例ではデータサイズが「10バイト」であり、データパケット5a送信時点でのシーケンス番号が「200」であるものとする。この場合、データパケット5aに付与されるシーケンス番号は「Seq=200」であり、データ長は「Len=10」である。
【0024】
送信元装置2は、ウィンドウサイズの範囲内においてデータを連続で(ACKを待たずに)送信できる。そこで送信元装置2は、データパケット5aのシーケンス番号「Seq=200」の値にデータ長「Len=10」の値を加算(Seq+Len)し、シーケンス番号を更新する。そして、送信元装置2は、データパケット5aに続けて更新されたシーケンス番号が付与されたデータパケット5bを送信する。その結果、データパケット5bのシーケンス番号は「Seq=210」となり、データ長は「Len=10」となる。
【0025】
宛先装置3では、データパケット5aとデータパケット5bを受信すると、データを2回受信したと認識し、ACKパケット5cを送信元装置2に応答する。ACKパケット5cには、ACK番号が含まれる。ACK番号は、次に送信元装置2から受け取りを期待するデータのシーケンス番号が示される。すなわち、ACK番号は、ACK番号で示されたデータの直前のデータまでのすべてのデータを正しく受信したことを示している。図2の例では、データパケット5aとデータパケット5bとを受信したことにより、200番目のデータから20バイト分のデータを受信したこととなる。そこで宛先装置3は、ACK番号「220」を付与したACKパケット5cを宛先装置3に送信する。
【0026】
このとき、送信元装置2がデータパケット5bを送信してから、ACKパケット5cを受信するまでの時間がRTTである。
図3は、ACK応答タイミングの第2のパターンを示す図である。第2のパターンは、“Delayed ACK”を応答する場合である。図3の例では、送信元装置2から1つのデータパケット6aが宛先装置3に送信されているが、そのデータパケット6aに続くデータ送信が行われていない。宛先装置3では、データパケット6aに対するACKは送信せず後続のパケットを待つが、所定の時間待ってもパケットが到着しない場合、データパケット6aに対するACKパケット6bを送信元装置2に送信する。このACKパケット6bによる確認応答は、Delayed ACKである。
【0027】
図3の例では、データパケット6aに付与されているシーケンス番号は「Seq=200」であり、データ長は「Len=10」である。宛先装置3は所定の遅延時間経過後、ACK番号「210」を付与したACKパケット6bを送信元装置2に送信する。
【0028】
ここで、送信元装置2付近で計測可能なRTTは、データパケット6aを送信してからACKパケット6bを受信するまでの時間である。しかし、この時間には“Delayed ACK”のための余分な遅延時間が含まれている。RTTとして本来計測したい値は、“Delayed ACK”による意図的な遅延時間を含まないデータ伝送による遅延時間である。すなわち、宛先装置3による意図的な遅延処理に基づく時間遅延が含まれていると、RTTがネットワークの通信品質を正しく表さなくなる。
【0029】
ここで、図2の第1のパターンと図3の第2のパターンとを比較すると、第1のパターンの宛先装置3はデータパケットを2回受信すると1つのACKパケットを返すが、第2のパターンはデータパケットを1回受信し、2回目が来ない場合にACKパケットを返す。ということは、データパケットを2回受信することをカウントし、その後のACKパケットにおけるACK番号=シーケンス番号(Seq)+データ長(Len)のときにRTTを計測するようにすればよい。
【0030】
図4は、遅延時間計測対象のパケット送受信パターンを示す図である。図4の例では、ACKパケット7aを受信した送信元装置2が、2つのデータパケット7b、7cを送信している。宛先装置3は、データパケット7c受信後にACKパケット7dを応答している。
【0031】
この場合、遅延時間計測装置1では、ACKパケット7aおよびACKパケット7dを挟んで、少なくとも2つのデータパケット7b,データパケット7cが送信されたことを確認する。すなわち、データパケット7cのシーケンス番号+データ長の値と、ACKパケットのACK番号の値とを比較し、一致することを確認した後、宛先ホストから前回送信されたACKパケット7a、および今回送信されたACKパケット7dのACK番号の差である20が、データパケット7cのデータ長(Len)である10よりも大きいことを確認する。この結果、少なくとも1個以上のデータパケットが7cの前に存在することが判断できる。すなわち、ACKパケット7dは“Delayed ACK”ではないことが判断できる。そして、遅延時間計測装置1は、2つ目のデータパケット7cが送信されてからACKパケット7dが応答されるまでの時間を計測し、RTTとする。
【0032】
このように、2つのデータパケットが連続で送信されていることを、RTT測定の条件とすることで、“Delayed ACK”によるACKパケットについては測定対象外となる。すなわち、“Delayed ACK”によるACKパケットとそれ以前のACKパケットとの間には1つのデータパケットしか送信されていない。そのため、計測対象から除外される。その結果、遅延時間計測装置1は、第1のパターンによるACKが応答された場合に限定してRTT計測を行うことができ、正確なRTT計測が可能となる。
【0033】
ところで、遅延時間計測装置1の機能は、ネットワーク上の通信を監視するモニタ装置に内蔵することができる。すなわち、モニタ装置内の遅延時間計測機能に図1に示した技術を適用することで、正確なRTT計測が可能となる。そこで、遅延時間計測機能を内蔵したモニタ装置の例を用いて、以下に実施の形態を詳細に説明する。
【0034】
[第1の実施の形態]
第1の実施の形態では、ネットワークから分岐させた信号(あるいはパケット)のモニタリングを行うモニタ装置に、遅延時間計測機能を実装するものとする。すなわち、伝送路からパケットのコピーを転送する機器を用いれば、遅延時間計測装置1はその機器経由でパケットを取得できる。ネットワーク上を伝送するパケットのコピーを生成するための機器としては、ポートミラーリング機能を有するスイッチングハブやネットワークタップがある。
【0035】
ポートミラーリング機能とは、送受信するフレームのコピーを指定した物理ポートへ送信する機能である。ここでフレームとは、OSI(Open System Interconnection)参照モデルにおけるデータリンク層で送信される信号の単位であり、IPパケットをカプセル化している。従って、コピーされたフレームから、データパケットやACKパケットを取り出すことができる。
【0036】
また、ネットワークタップは、伝送路上の信号を光スプリッタなどによって分岐させ、一方をモニタリング用のポートに出力するものである。このネットワークタップを用いれば、データロスなしにコピーされたパケットをモニタポートから出力できる。そこで、第1の実施の形態では、ネットワークタップを用いて信号を分岐させて、その信号をモニタリングすることとする。
【0037】
図5は、第1の実施の形態のシステム構成例を示す図である。モニタ装置100は、送信元ホスト21と宛先ホスト22との間の遅延時間を計測する。送信元ホスト21は、ネットワーク10を介して宛先ホスト22に接続されている。この時、送信元ホスト21とネットワーク10との間には、ネットワークタップ30が接続されている。ネットワークタップ30は、送信元ホスト21に対して送受信されるパケットのコピーを生成し、コピーされたパケットをモニタ装置100に送信する。
【0038】
なお、ネットワークタップ30とモニタ装置100とは、2本の通信ケーブル31,32で接続されている。一方の通信ケーブル31は、送信元ホスト21から宛先ホスト22への信号を分岐させた信号を送出するためのものである。もう一方の通信ケーブル32は、宛先ホスト22から送信元ホスト21への信号を分岐させた信号を送出するためのものである。モニタ装置100は、ネットワークタップ30から受け取ったパケットを解析し、往復遅延時間(RTT)を計測する。
【0039】
図6は、本実施の形態に用いるモニタ装置のハードウェア構成例を示す図である。モニタ装置100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス107を介してRAM(Random Access Memory)102、ハードディスクドライブ(HDD:Hard Disk Drive)103、入出力インタフェース104、およびLANインタフェース105,106が接続されている。
【0040】
RAM102は、モニタ装置100の主記憶装置として使用される。RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。HDD103は、モニタ装置100の二次記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【0041】
入出力インタフェース104は、RC232Cなどの通信インタフェースである。入出力インタフェース104には、コンソール端末11を接続することができる。システムの管理者は、コンソール端末11を用いてモニタ装置100に対するRTT計測開始の指示を入力したり、計測したRTTの値を表示したりすることができる。
【0042】
LANインタフェース105は、通信ケーブル31によってネットワークタップ30に接続されている。LANインタフェース105は、通信ケーブル31を介してネットワークタップ30で分岐された送信元ホスト21からの出力信号を取得する。LANインタフェース105は、入力した信号によって伝送されたフレームを認識し、フレーム内の情報をCPU101に渡す。
【0043】
LANインタフェース106は、通信ケーブル32によってネットワークタップ30に接続されている。LANインタフェース106は、通信ケーブル32を介してネットワークタップ30で分岐された送信元ホスト21への入力信号を取得する。LANインタフェース106は、入力した信号によって伝送されたフレームを認識し、フレーム内の情報をCPU101に渡す。
【0044】
なお、一般的な通信インタフェースは、自身宛のパケットのみを取得するが、モニタ装置100のLANインタフェース105,106ではモニタリングのために、宛先に関係なくすべてのパケットを取得する。また、モニタ装置100に、管理用のLANインタフェースを追加することもできる。その場合、管理用のLANインタフェースに対してネットワーク経由で管理用のコンピュータを接続する。システムの管理者は、管理用のコンピュータを操作してモニタ装置100に対するRTT計測指示を入力したり、および計測されたRTTを管理用のコンピュータにコピーすることができる。
【0045】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
次に、モニタ装置100の有する機能を具体的に説明する。
【0046】
図7は、モニタ装置の機能を示すブロック図である。モニタ装置100は、パケットキャプチャ部110とRTT計測部120とを有している。
パケットキャプチャ部110は、ネットワークタップ30から取得した信号からパケットを取得する。そのために、パケットキャプチャ部110は、入力部111とパケット情報取得部112とを有している。入力部111は、送信されたデータパケット、あるいは返信されたACKパケットを取り込む。パケット情報取得部112は、パケットからIPヘッダとTCPヘッダ(以下、IPヘッダとTCPヘッダとを纏めてヘッダ情報と呼ぶ)を取り出し、キャプチャした時間(タイムスタンプ)を付けてRTT計測部120へ渡す。
【0047】
RTT計測部120は、パケットキャプチャ部110から渡された情報に基づいて遅延時間を計測する。そのために、RTT計測部120は、データ処理部121、ACK処理部123、データ/ACK用メモリ124、演算処理部125、およびRTT計測値データベース(DB)126を有している。
【0048】
データ処理部121は、データパケットのヘッダ情報からデータを関係付けし、データ/ACK用メモリ124へ保存する。ACK処理部123は、ACKパケットのヘッダ情報からデータを関係付けし、データ/ACK用メモリ124へ保存する。
【0049】
データ/ACK用メモリ124は、データ処理部121の解析結果を記憶する。また、データ/ACK用メモリ124は、ACK処理部123の解析結果を記憶する。例えば、RAM102の記憶領域の一部がデータ/ACK用メモリ124として使用される。具体的には、データ処理部121やACK処理部123の解析結果は、データ/ACK用メモリ124内のTCPセッションテーブル124aに設定される。TCPセッションテーブル124aは、キャプチャしたパケットに基づいて認識できるTCPセッションの情報を管理するデータテーブルである。
【0050】
演算処理部125は、データ/ACK用メモリ124からデータを取り出し、遅延時間計測の判定とRTT計測値を算出する。
RTT計測値DB126は、RTT計測値を格納する。例えば、HDD103の記憶領域の一部がRTT計測値DB126として使用される。
【0051】
図8は、TCPセッションテーブルを示す図である。TCPセッションテーブル124aには、TCPセッションID、送信元アドレス、複数のデータパケット、および前回ACKの各欄が設けられている。
【0052】
TCPセッションIDの欄には、送信元ホスト21と宛先ホスト22との間のTCPセッションを一意に識別するための識別情報(TCPセッションID)が設定される。TCPセッションIDは、TCP/IPのパケットの送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号の組から一意に決定される値である。なお、送信元IPアドレスと宛先IPアドレス、および送信元ポート番号と宛先ポート番号がそれぞれ相互に入れ替わっても、同じセッションIDが得られる。
【0053】
送信元IPアドレスの欄には、パケットの送信元IPアドレス(SA)が設定される。
複数のデータパケットの欄には、同一セッションにおいて対応する送信元IPアドレスから送信されたデータパケットそれぞれに関する情報が設定される。該当セッションで検出されたデータパケットの順に、検出されたデータパケットに関する情報が、第1のデータパケット情報(DP1)、第2のデータパケット情報(DP2)、・・・として設定される。設定されるデータパケットの情報は、受信時刻(Time)、シーケンス番号(Seq)、およびデータ長(Len)である。
【0054】
前回ACKの欄には、TCPセッション内の通信で最後に検出されたACKパケットのACK番号が設定される。
図9は、RTT計測値DBのデータ構造例を示す図である。RTT計測値DB126には、TCP統計テーブル126aが格納されている。TCP統計テーブル126aには、TCPセッションID、送信元ホストIPアドレス、RTT計測値の積算値を表すRTT総和、RTT二乗和、RTT計測回数の欄が設けられている。
【0055】
TCPセッションIDの欄には、検出されたセッションのTCPセッションIDが設定される。
送信元IPアドレスの欄には、対応するセッションの内で検出されたパケットの送信元のIPアドレスが設定される。
【0056】
RTT総和の欄には、対応するセッションの送信元IPアドレスで示されるノードから送信されたデータパケットと、そのデータパケットに対するACKパケットとに基づいて計測されたRTTの総和が設定される。
【0057】
RTT二乗和の欄には、対応するセッションの送信元IPアドレスで示されるノードから送信されたデータパケットと、そのデータパケットに対するACKパケットとに基づいて計測されたRTTそれぞれを二乗した値の総和が設定される。
【0058】
RTT計測回数の欄には、対応するセッションの送信元IPアドレスで示されるノードから送信されたデータパケットと、そのデータパケットに対するACKパケットとに基づいて計測されたRTTの数が設定される。
【0059】
図10は、パケットの構造を示す図である。TCP/IPのパケット40には、IPヘッダ41とTCPヘッダ42とが含まれている。IPヘッダ41は、ネットワーク層のプロトコルであるIPに従った通信のための情報である。TCPヘッダ42は、トランスポート層のプロトコルであるTCPに従った通信のための情報である。
【0060】
図11は、IPヘッダの構造を示す図である。IPヘッダ41には、バージョン(Version)、ヘッダ長(IHL)、サービスタイプ(Type of Service)、パケット長(Total Length)、識別子(Identification)、フラグ(Flags)、フラグメントオフセット(Fragment Offset)、生存時間(Time to Live)、プロトコル(Protocol)、ヘッダチェックサム(Header Checksum)、送信元アドレス(Source Address)、宛先アドレス(Destination Address)、オプション(Options)、およびパディング(Padding)のフィールドが設けられている。
【0061】
バージョンは、IPのバージョンを表す。ヘッダ長は、IPヘッダの長さを4バイト単位で示す。サービスタイプは、IPサービスの品質を表す。パケット長は、 IPヘッダ41にIPデータを加えたパケット全体の長さを表す。識別子は、IPパケットを識別するためのユニークな値である。フラグは、パケットの分割に関する制御情報である。フラグメントオフセットは、分割されたデータが、分割前のデータの先頭から何ビット目から始まるのかを表す。生存時間は、IPデータグラムが通過できるルータの数を表す。プロトコルは、IPパケットに格納されたデータのプロトコルを表す(TCPは「6」である)。ヘッダチェックサムは、IPヘッダが壊れていないか検査するための値が入れられる。送信元IPアドレスは、パケットの送信元のIPアドレスである(データパケットであれば送信元ホスト21が送信元であり、ACKパケットであれば宛先ホスト22が送信元である)。宛先IPアドレスは、パケットの宛先のIPアドレスである(データパケットであれば宛先ホスト22が宛先であり、ACKパケットであれば送信元ホスト21が宛先である)。オプションは、テストなどで使用される領域であり、パケットの送信元において送信時刻を示すタイムスタンプを設定することができる。パディングは、オプションを付加したことでヘッダ長が32ビットの整数倍にならない場合に、ヘッダ長を32ビットの整数倍にするための穴埋め(パディング)のデータである。
【0062】
データ処理部121は、このようなIPヘッダ41を有するデータパケットから送信元IPアドレスを取得して、TCPセッションテーブル124aに設定する。同様に、ACK処理部123は、このようなIPヘッダ41を有するACKパケットから送信元IPアドレスを取得して、TCPセッションテーブル124aに設定する。
【0063】
図12は、TCPヘッダの構造を示す図である。TCPヘッダ42には、送信元ポート番号(source port number)、宛先ポート番号(destination port number)、シーケンス番号(sequence number)、ACK番号(acknowledgement number)、ヘッダ長(header length)、予約領域(Reserved)、コードビット(URG,ACK,PSH,RST,SYN,FIN)、ウィンドウサイズ(windows size)、チェックサム(TCP checksum)、緊急ポインタ(urgent pointer)、およびオプション(options)が設けられている。
【0064】
送信元ポート番号は、パケットを送信したプログラムを示す番号である。宛先ポート番号は、パケットを受信すべきプログラムを示す番号である。シーケンス番号は、データパケットの送信時に送信元ホスト21で付与される。ACK番号は、ACKパケットの送信時に宛先ホスト22で付与され、次に受信することを期待するデータパケットのシーケンス番号を示す。ヘッダ長は、TCPヘッダ42の長さを示している。予約領域は、将来の拡張のために用意されたフィールドである。
【0065】
コードビットは、各種制御用のフラグである。URGが「1」の場合、緊急に処理すべきデータが含まれていることを示す。ACKが「1」の場合、応答確認番号が使用されていることを示す。PSHが「1」の場合、TCPから上位のアプリケーションに対して、受け取ったデータをすぐに配送することを示す。RSTが「1」の場合、なんらかの要因で通信不良が起き制御不能になったことを示す。SYNが「1」の場合、このTCPヘッダに示すシーケンス番号で、シーケンス番号の初期化を行うことを示す。FINが「1」の場合、送信側が送るデータが終了したことを示す。
【0066】
ウィンドウサイズは、ACK番号で示したシーケンス番号からどの程度のデータを受信可能なのかを示す。チェックサムは、TCPヘッダとデータが壊れていないか検査するための値が入れられる。緊急ポインタは、URGが「1」のときに有効となり、緊急を要するデータの格納場所を示すポインタである。オプションには、任意の情報が設定される。
【0067】
データ処理部121は、このようなTCPヘッダ42を有するデータパケットからシーケンス番号を取得して、TCPセッションテーブル124aに設定する。また、データ処理部121は、データパケットに含まれているデータを取得し、そのデータの長さをデータ長としてTCPセッションテーブル124aに設定する。さらに、データ処理部121は、データパケットに対応するTCPセッションIDを計算し、設定すると共に、データパケットを受信した時刻を設定する。
【0068】
ACK処理部123は、このようなTCPヘッダ42を有するACKパケットからACK番号を取得して、TCPセッションテーブル124aに設定する。また、ACK処理部123は、該当するTCPセッションIDのところに、ACKパケットを受信した時刻をキャプチャ時刻の欄に設定する。
【0069】
次に、RTTを計測する手順を説明する。
図13は、RTT計測処理の手順を示すフローチャートである。まず、データ処理部121とACK処理部123は、それぞれ新たなパケットを受信したか否かを判断する(ステップS1)、パケットを受信していなければ、パケットの受信を待つ(ステップS1を繰り返す)。パケットを受信した場合(ステップS1でYESの場合)、データ処理部121とACK処理部123はそれぞれ、受信したTCP/IPパケットの送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号の組からTCPセッションIDを作成する(ステップS2)。TCP/IPのセッションにおいては、同一セッションであっても、IPアドレスとポート番号の組が送信元の場合もあり、宛先の場合もある。そのため、送信元と宛先とに対するIPアドレスとポート番号との組みが入れ替わっても、これらを同一とみなす必要がある。本実施形態では、TCPセッションIDは受信したTCP/IPパケットが同一のセッション(コネクション)に属するか判定するために用いる識別子で、送信元と宛先とのそれぞれのIPアドレスとポート番号とが逆転しても同一のセッションと判断できる値である。
【0070】
データ処理部121とACK処理部123はそれぞれ、受信したパケットのTCPセッションIDと送信元IPアドレスとに対応するレコードがTCPセッションテーブル124aに存在するか否かを判断する(ステップS3)。該当するレコードが存在しない場合(ステップS3でNO)、データ処理部121が新たなTCPセッションIDと送信元IPアドレスとを持つレコードをTCPセッションテーブル124aに登録する(ステップS4)。この処理は、TCPセッションを確立するためのパケットを受信したときに実行されることとなる。例えば、送信元ホスト21から宛先ホスト22に送信されたセッション確立を要求するパケットを検出したものとする。この場合、検出したパケットに応じたTCPセッションIDと送信元IPアドレス(送信元ホスト21のIPアドレス)に対応するレコードが、TCPセッションテーブル124aに追加される。次に、送信元ホスト21からのセッションの確立要求する宛先ホスト22からの応答を示すパケットが検出されたものとする。すると、検出したパケットに応じたTCPセッションIDと送信元IPアドレス(宛先ホスト22のIPアドレス)に対応するレコードが、TCPセッションテーブル124aに追加される。
【0071】
ステップS3の処理において該当するレコードが存在した場合(ステップS3でYES)、データ処理部121とACK処理部123はそれぞれ、受信したパケットのデータ長(Len)が0以上か否かを判断する(ステップS5)。データ長(Len)が0以上であれば(ステップS5でYES)、データ処理部121は、TCPセッションテーブル124aの該当レコードにデータパケットの受信時刻(Time)、シーケンス番号(Seq)、およびデータ長(Len)をDPx(x=1,2,..N)として記録する(ステップS6)。ここで、xは、該当するレコード内のデータパケット情報の順番を示す数字である。また、Nは自然数である。なお、1レコードあたりデータパケットを記録する最大数であるNは任意の数でよく、ここではNは有限であると想定する。なお有限である場合で、ステップS6において記録する領域がない場合(既にx=Nのデータパケット情報がある場合)は記録しない。
【0072】
次にデータ処理部121は、ACKタ処理部123は、受信したパケットの宛先IPアドレスをDAとする(ステップS7)。
ACK処理部123は受信しパケットと同じTCPセッションIDが設定され、受信したパケットの宛先IPアドレス(DA)が送信元IPアドレス(SA)として設定されたレコードを、TCPセッションテーブル124aから抽出する。そして、ACK処理部123は、シーケンス番号(Seq)にデータ長(Len)を加算した値が、受信したパケットのACK番号(ACK)に一致するデータパケット情報(DP)があるか否か(DA=SAかつACK=Seq+Len)を判断する(ステップS8)。
【0073】
ステップS8で該当するデータパケット情報が検出された場合(ステップ8でYES)、ACKに対応したデータパケットが、モニタ装置100で既に受信されていることを意味する。この場合、受信したパケットが単一のデータパケットに対するACKなのか、複数のデータパケットに対するACKかを判断する必要がある。そのためACK処理部123は、受信したパケットのACKと検出しレコードに記録されている前回ACKとの差分が、検出したデータパケット情報のデータ長(Len)より大きいか否かを判断する(ステップS9)。
【0074】
受信したパケットのACKと検出しレコードに記録されている前回ACKとの差分がデータ長より大きければ(ステップS9でYES)、該当するデータパケット情報が記録する前に連続する他のデータパケットを受信していることが分かり、RTTを正確に計測できる第1のパターンであると判断できる。そこでACK処理部123は、パケットの受信時刻から、ステップS8の判断で該当したデータパケット情報に含まれる「Time」を減算した値をRTTとする(ステップS10)。
【0075】
RTTを算出したACK処理部123は、算出したRTTに基づいてRTT計測値テーブル126aを更新する(ステップS11)。具体的には、ACK処理部123は、ステップS8で抽出したレコードのTCPセッションIDと送信元IPアドレスとを有するレコードを、TCP計測値テーブル126aから検索する。該当するレコードが見つからない場合、ACK処理部123は、TCPセッションIDと送信元IPアドレスとを設定した新たなレコードをRTT計測値テーブル126aに追加する。新たに追加されたレコードのRTT総和の初期値は「0」、RTT二乗和の初期値は「0」、RTT計測回数の初期値は「0」である。そして、ACK処理部123は、検出したかあるいは新たに途追加したレコードのRTT総和に対して、ステップS10で算出したRTTの値を加算する。また、ACK処理部123は、該当するレコードのRTT二乗和に対して、ステップS10で算出したRTTを二乗した値を加算する。さらに、ACK処理部123は、該当するレコードのRTT測定回数に1を加算(インクリメント)する。
【0076】
なお、ステップS9で該当するデータパケット情報が検出されなかった場合(ステップS9でNO)、RTTが正確に計測できない第2のパターンであると判断できる。そこで、ACK処理部123は、受信したパケットのACKに対応するデータパケット情報(シーケンス番号にデータ長を加算した値が受信したパケットのACK番号に等しい)、およびそのデータパケット情報よりも前に登録されたデータパケット情報を、ステップS8で検出したTCPセッションテーブル124aおレコードから消去する(ステップ11)。
【0077】
一方、ステップS8において該当するデータパケット情報が検出できなかった場合、何らかの理由でデータパケットを計測装置が受信できず、ACKパケットだけを受信したとみなせる。この場合、ACK処理部123は、受信しパケットと同じTCPセッションIDが設定され、受信したパケットの宛先IPアドレス(DA)が送信元IPアドレス(SA)として設定されたレコードを、TCPセッションテーブル124aから抽出する。そして、ACK処理部123は、シーケンス番号(Seq)にデータ長(Len)を加算した値が、受信したパケットのACK番号(ACK)未満となるデータパケット情報(DP)があるか否か(DA=SAかつACK>Seq+Len)を判断する(ステップS13)。
【0078】
ACK処理部123は、ステップS13の判断の結果、該当するレコードおよびデータパケット情報がある場合、該当レコード内の該当データパケット情報よりも前に登録されたデータパケット情報を、TCPセッションテーブル124aから消去する(ステップS14)。
【0079】
ステップS12,S14に示したように、RTTの計測に不要となったデータパケット情報を適宜削除することで、データパケット情報を記録する有限の領域を再利用できる。
ACK処理部123は、ステップS11S12,S14の処理後に、受信しパケットと同じTCPセッションIDが設定され、受信したパケットの宛先IPアドレス(DA)が送信元IPアドレス(SA)として設定されたレコードの前回ACKを、受信したパケットのACK番号を更新する(ステップS15)。その後、処理がステップS1に進められる。
【0080】
次に、第1のパターンと第2のパターンとのACKが混在する場合に、第1のパターンのみを抽出してRTT測定を行う具体例について説明する。
図14は、第1のパターンと第2のパターンとのACKが混在する場合のシーケンス図である。図14の例では、宛先ホスト22からACKパケット51(ACK番号「200」を受け取った送信元ホスト21が、データパケット52(シーケンス番号「200」、データ長「10」)を宛先ホスト22に送信している。宛先ホスト22では、データパケット52に応答してACKパケット53(ACK番号「210」)を送信元ホスト21に送信している。
【0081】
送信元ホスト21は、ACKパケット53を受信した後に、データパケット54(シーケンス番号210,データ長「10」)とデータパケット55(シーケンス番号220,データ長「10」)とを続けて(ACKの受信を待たずに)送信している。宛先ホスト22では、2つのデータパケット54,55に応答して、1つのACKパケット56(ACK番号「230」)を送信元ホスト21に送信している。
【0082】
ここで、ACKパケット53は、1つのデータパケット52に対するACKである。すると、ACKパケット53は、第2のパターンによるACKである。また、ACKパケット56は、2つの連続するデータパケット54,55に対するACKである。すると、ACKパケット56は、第1のパターンによるACKである。
【0083】
このような各パケットは、送信元ホスト21の手前に配置されたネットワークタップ30によって分岐され、モニタ装置100に送られる。モニタ装置100では、まず、2つの連続するデータパケットの検出が行われる。すると、データパケット54,55が検出される。データパケット52については、直前のデータパケットに対するACKパケット51が存在し、自身に対するACKパケット53が存在することから、他のデータパケットとの連続性はない。そのため、データパケット52は検出されない。
【0084】
次にモニタ装置100は、検出した2つのデータパケット54,55のうちの2つめのデータパケット55のシーケンス番号にデータ長を加算した値をACK番号とするACKパケット56を検出する。そして、モニタ装置100は、データパケット55が送信されてからACKパケット56が応答されるまでの時間をRTTとして計測する。計測されたRTTは、必ず第1のパターンによる遅延確認応答によって計測されたものであるため、正確にネットワーク上のデータ遅延を表すものである。すなわち、計測されたRTTには“Delayed ACK”による遅延時間が含まれていない。
【0085】
ところで、図14では、説明を分かりやすくするために、第1のパターンと第2のパターンとが時間的に重複していない例を示している。しかし、データ転送時のウィンドウサイズが大きいと、3つ以上のデータパケットが連続して送信されることもある。このような場合、第1のパターンと第2のパターンとが時間的に重複して検出されることもある。
【0086】
図15は、第1のパターンと第2のパターンとが時間的に重複した場合のシーケンス図である。図15の例では、宛先ホスト22からACKパケット61(ACK番号「200」を受け取った送信元ホスト21が、データパケット62(シーケンス番号「200」、データ長「10」)、データパケット63(シーケンス番号210,データ長「10」)とデータパケット64(シーケンス番号220,データ長「10」)を続けて(ACKの受信を待たずに)送信している。
【0087】
宛先ホスト22では、データパケット62に応答してACKパケット65(ACK番号「210」)を送信元ホスト21に送信している。また、宛先ホスト22では、2つのデータパケット63,64に応答して、1つのACKパケット66(ACK番号「230」)を送信元ホスト21に送信している。
【0088】
ここで、ACKパケット65は、1つのデータパケット62に対するACKである。すると、ACKパケット65は、第2のパターンによるACKである。また、ACKパケット66は、2つの連続するデータパケット63,64に対するACKである。すると、ACKパケット66は、第1のパターンによるACKである。
【0089】
モニタ装置100は、これらのパケットを送信元ホスト21の手前でキャプチャする。モニタ装置100では、まず、2つの連続するデータパケットの検出が行われる。すると、データパケット63,64が検出される。データパケット62については、直前のデータパケットに対するACKパケット61が存在し、自身に対するACKパケット65が存在することから、他のデータパケットとの連続性はないと判断される。すなわち、時間的にデータパケット62とデータパケット63とが連続していても、1つめのデータパケット62に対するACKパケット65が存在する場合、データパケット62とデータパケット63とを、連続する2つのデータパケットであるとは判断しない。そのため、データパケット62は検出されない。
【0090】
次にモニタ装置100は、検出した2つのデータパケット63,64のうちの2つめのデータパケット64のシーケンス番号にデータ長を加算した値をACK番号とするACKパケット66を検出する。そして、モニタ装置100は、データパケット64が送信されてからACKパケット66が応答されるまでの時間をRTTとして計測する。
【0091】
計測されたRTTは、必ず第1のパターンによる遅延確認応答によって計測されたものであるため、正確にネットワーク上のデータ遅延を表すものである。すなわち、計測されたRTTには“Delayed ACK”による遅延時間が含まれていない。このように、途中に他のACKパケットが割り込んでも正確なRTTを計測できる。
【0092】
[第2の実施の形態]
第2の実施の形態は、ネットワークタップを使用せずに、モニタ装置を送信元ホストと宛先ホストとの間に配置したものである。
【0093】
図16は、第2の実施の形態のシステム構成例を示す図である。第2の実施の形態では、送信元ホスト21とネットワーク10との間にモニタ装置100aが接続されている。モニタ装置100aは、送信元ホスト21と宛先ホスト22との間で送受信されるパケットをキャプチャし、RTTを計測する。
【0094】
図17は、第2の実施の形態に係るモニタ装置の機能を示すブロック図である。第2の実施の形態にかかるモニタ装置100aの機能は、図7に示した第1の実施の形態に係るRTT計測100とほぼ同じである。そこで、図17のモニタ装置100a内のRTT計測100と同じ機能には図7と同じ符号を付し、説明を省略する。
【0095】
第2の実施の形態におけるモニタ装置100aは、パケットキャプチャ部110a内に入力部113と出力部114とを備えている。入力部113は、送信元ホスト21または宛先ホスト22から送られたパケットをパケット情報取得部112aに入力する。出力部114は、パケット情報取得部112aを介して入力されたパケットを取得し、そのパケットの宛先に応じて、パケットを送信元ホスト21または宛先ホスト22に送信する。
【0096】
パケット情報取得部112aは、入力部113を介して入力されたパケットのコピーを生成し、RTT計測部120に渡す。そして、パケット情報取得部112aは、パケットを出力部114に渡す。
【0097】
このようなモニタ装置100aにより、ネットワークタップなどの信号を分岐させる機器を介さずにパケットをキャプチャし、RTTの計測が可能となる。
なお、上記の第1、第2の実施の形態では、送信元ホスト21から宛先装置22に送られるデータパケットをキャプチャしているが、キャプチャするのではなく、パケットの各種情報を一旦ファイルなどの形式でデータ記録装置に記録しておくこともできる。この場合、モニタ装置100は、パケットの各種情報を記憶データ記憶装置からデータ読み取り、RTTを計測することができる。
【0098】
また、上記の各実施の形態に示したモニタ装置の処理機能は、コンピュータによって実現することができる。その場合、モニタ装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disc)などがある。
【0099】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0100】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0101】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
【図面の簡単な説明】
【0102】
【図1】実施の形態の概要を示す図である。
【図2】ACK応答タイミングの第1のパターンを示す図である。
【図3】ACK応答タイミングの第2のパターンを示す図である。
【図4】遅延時間計測対象のパケット送受信パターンを示す図である。
【図5】第1の実施の形態のシステム構成例を示す図である。
【図6】本実施の形態に用いるモニタ装置のハードウェア構成例を示す図である。
【図7】モニタ装置の機能を示すブロック図である。
【図8】TCPセッションテーブルを示す図である。
【図9】RTT計測値DBのデータ構造例を示す図である。
【図10】パケットの構造を示す図である。
【図11】IPヘッダの構造を示す図である。
【図12】TCPヘッダの構造を示す図である。
【図13】RTT計測処理の手順を示すフローチャートである。
【図14】第1のパターンと第2のパターンとのACKが混在する場合のシーケンス図である。
【図15】第1のパターンと第2のパターンとが時間的に重複した場合のシーケンス図である。
【図16】第2の実施の形態のシステム構成例を示す図である。
【図17】第2の実施の形態に係るモニタ装置の機能を示すブロック図である。
【図18】TCPにおけるパケット送受信の基本動作例を示す図である。
【符号の説明】
【0103】
1 遅延時間計測装置
1a データ解析手段
1b 記憶手段
1c 計算手段
2 送信元装置
3 宛先装置
4 ネットワーク
【特許請求の範囲】
【請求項1】
データ送信から確認応答があるまでの往復遅延時間を計測する遅延時間計測装置であって、
送信元装置から宛先装置に送られるデータパケットをキャプチャして、キャプチャした前記データパケットのシーケンス番号とデータ長とを取得し、受信時刻を付加して記憶手段に格納すると共に、前記宛先装置から前記送信元装置に返されるACKパケットをキャプチャして、キャプチャした前記ACKパケットからACK番号を取得し、受信時刻を付加して前記記憶手段に格納するデータ解析手段と、
前記ACKパケットを待たずに送信された2つの連続する前記データパケットを前記記憶手段から取得し、連続する前記データパケットにおける2番目のデータパケットの前記シーケンス番号に前記データ長を加算した値がACK番号となる前記ACKパケットを前記記憶手段から取得し、連続する前記2番目のデータパケットの受信時刻と取得された前記ACKパケットの受信時刻とから前記往復遅延時間を計算する計算手段と、
を有する遅延時間計測装置。
【請求項2】
前記計算手段は、2番目のデータパケットの受信時刻と、前記2番目のデータパケットの前記シーケンス番号に前記データ長を加算した値がACK番号となる前記ACKパケットの受信時刻との差を前記往復遅延時間とする請求項1記載の遅延時間計測装置。
【請求項3】
前記計算手段は、2つの前記データパケットのうち、1番目のデータパケットのシーケンス番号に前記1番目のデータパケットのデータ長を加算した値が前記2番目のデータパケットのシーケンス番号であり、かつ前記1番目のデータパケットに対する前記ACKパケットが存在しない場合、2つの前記データパケットを連続するデータパケットと判断する請求項1記載の遅延時間計測装置。
【請求項4】
前記データ解析手段は、前記送信元装置と前記宛先装置との間の通信経路上から分岐された信号を取得し、前記データパケットをキャプチャする請求項1記載の遅延時間計測装置。
【請求項5】
前記データ解析手段において、前記送信元装置から前記宛先装置に送られるデータパケットをキャプチャするのではなく、データパケットの各種情報を一旦記録したファイル、あるいはデータ記憶装置からデータを入力する方式とした請求項1記載の遅延時間計測装置。
【請求項6】
データ送信から確認応答があるまでの往復遅延時間を計測する処理をコンピュータに実行させるための遅延時間計測プログラムであって、
前記コンピュータを、
送信元装置から宛先装置に送られるデータパケットをキャプチャして、キャプチャした前記データパケットのシーケンス番号とデータ長とを取得し、受信時刻を付加して記憶手段に格納すると共に、前記宛先装置から前記送信元装置に返されるACKパケットをキャプチャして、キャプチャした前記ACKパケットからACK番号を取得し、受信時刻を付加して前記記憶手段に格納するデータ解析手段、
前記ACKパケットを待たずに送信された2つの連続する前記データパケットを前記記憶手段から取得し、連続する前記データパケットにおける2番目のデータパケットの前記シーケンス番号に前記データ長を加算した値がACK番号となる前記ACKパケットを前記記憶手段から取得し、連続する前記2番目のデータパケットの受信時刻と取得された前記ACKパケットの受信時刻とから前記往復遅延時間を計算する計算手段、
として機能させる遅延時間計測プログラム。
【請求項7】
データ送信から確認応答があるまでの往復遅延時間を計測する処理をコンピュータで行うための遅延時間計測方法であって、
前記コンピュータが、
送信元装置から宛先装置に送られるデータパケットをキャプチャして、キャプチャした前記データパケットのシーケンス番号とデータ長とを取得し、受信時刻を付加して記憶手段に格納すると共に、前記宛先装置から前記送信元装置に返されるACKパケットをキャプチャして、キャプチャした前記ACKパケットからACK番号を取得し、受信時刻を付加して前記記憶手段に格納し、
前記ACKパケットを待たずに送信された2つの連続する前記データパケットを前記記憶手段から取得し、連続する前記データパケットにおける2番目のデータパケットの前記シーケンス番号に前記データ長を加算した値がACK番号となる前記ACKパケットを前記記憶手段から取得し、連続する前記2番目のデータパケットの受信時刻と取得された前記ACKパケットの受信時刻とから前記往復遅延時間を計算する、
ことを特徴とする遅延時間計測方法。
【請求項1】
データ送信から確認応答があるまでの往復遅延時間を計測する遅延時間計測装置であって、
送信元装置から宛先装置に送られるデータパケットをキャプチャして、キャプチャした前記データパケットのシーケンス番号とデータ長とを取得し、受信時刻を付加して記憶手段に格納すると共に、前記宛先装置から前記送信元装置に返されるACKパケットをキャプチャして、キャプチャした前記ACKパケットからACK番号を取得し、受信時刻を付加して前記記憶手段に格納するデータ解析手段と、
前記ACKパケットを待たずに送信された2つの連続する前記データパケットを前記記憶手段から取得し、連続する前記データパケットにおける2番目のデータパケットの前記シーケンス番号に前記データ長を加算した値がACK番号となる前記ACKパケットを前記記憶手段から取得し、連続する前記2番目のデータパケットの受信時刻と取得された前記ACKパケットの受信時刻とから前記往復遅延時間を計算する計算手段と、
を有する遅延時間計測装置。
【請求項2】
前記計算手段は、2番目のデータパケットの受信時刻と、前記2番目のデータパケットの前記シーケンス番号に前記データ長を加算した値がACK番号となる前記ACKパケットの受信時刻との差を前記往復遅延時間とする請求項1記載の遅延時間計測装置。
【請求項3】
前記計算手段は、2つの前記データパケットのうち、1番目のデータパケットのシーケンス番号に前記1番目のデータパケットのデータ長を加算した値が前記2番目のデータパケットのシーケンス番号であり、かつ前記1番目のデータパケットに対する前記ACKパケットが存在しない場合、2つの前記データパケットを連続するデータパケットと判断する請求項1記載の遅延時間計測装置。
【請求項4】
前記データ解析手段は、前記送信元装置と前記宛先装置との間の通信経路上から分岐された信号を取得し、前記データパケットをキャプチャする請求項1記載の遅延時間計測装置。
【請求項5】
前記データ解析手段において、前記送信元装置から前記宛先装置に送られるデータパケットをキャプチャするのではなく、データパケットの各種情報を一旦記録したファイル、あるいはデータ記憶装置からデータを入力する方式とした請求項1記載の遅延時間計測装置。
【請求項6】
データ送信から確認応答があるまでの往復遅延時間を計測する処理をコンピュータに実行させるための遅延時間計測プログラムであって、
前記コンピュータを、
送信元装置から宛先装置に送られるデータパケットをキャプチャして、キャプチャした前記データパケットのシーケンス番号とデータ長とを取得し、受信時刻を付加して記憶手段に格納すると共に、前記宛先装置から前記送信元装置に返されるACKパケットをキャプチャして、キャプチャした前記ACKパケットからACK番号を取得し、受信時刻を付加して前記記憶手段に格納するデータ解析手段、
前記ACKパケットを待たずに送信された2つの連続する前記データパケットを前記記憶手段から取得し、連続する前記データパケットにおける2番目のデータパケットの前記シーケンス番号に前記データ長を加算した値がACK番号となる前記ACKパケットを前記記憶手段から取得し、連続する前記2番目のデータパケットの受信時刻と取得された前記ACKパケットの受信時刻とから前記往復遅延時間を計算する計算手段、
として機能させる遅延時間計測プログラム。
【請求項7】
データ送信から確認応答があるまでの往復遅延時間を計測する処理をコンピュータで行うための遅延時間計測方法であって、
前記コンピュータが、
送信元装置から宛先装置に送られるデータパケットをキャプチャして、キャプチャした前記データパケットのシーケンス番号とデータ長とを取得し、受信時刻を付加して記憶手段に格納すると共に、前記宛先装置から前記送信元装置に返されるACKパケットをキャプチャして、キャプチャした前記ACKパケットからACK番号を取得し、受信時刻を付加して前記記憶手段に格納し、
前記ACKパケットを待たずに送信された2つの連続する前記データパケットを前記記憶手段から取得し、連続する前記データパケットにおける2番目のデータパケットの前記シーケンス番号に前記データ長を加算した値がACK番号となる前記ACKパケットを前記記憶手段から取得し、連続する前記2番目のデータパケットの受信時刻と取得された前記ACKパケットの受信時刻とから前記往復遅延時間を計算する、
ことを特徴とする遅延時間計測方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2009−303089(P2009−303089A)
【公開日】平成21年12月24日(2009.12.24)
【国際特許分類】
【出願番号】特願2008−157393(P2008−157393)
【出願日】平成20年6月17日(2008.6.17)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.WINDOWS
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成21年12月24日(2009.12.24)
【国際特許分類】
【出願日】平成20年6月17日(2008.6.17)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.WINDOWS
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]