JP6163954B2 - パケット解析プログラム、パケット解析装置およびパケット解析方法 - Google Patents

パケット解析プログラム、パケット解析装置およびパケット解析方法 Download PDF

Info

Publication number
JP6163954B2
JP6163954B2 JP2013165410A JP2013165410A JP6163954B2 JP 6163954 B2 JP6163954 B2 JP 6163954B2 JP 2013165410 A JP2013165410 A JP 2013165410A JP 2013165410 A JP2013165410 A JP 2013165410A JP 6163954 B2 JP6163954 B2 JP 6163954B2
Authority
JP
Japan
Prior art keywords
packet
data
ack
terminal
analysis device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013165410A
Other languages
English (en)
Other versions
JP2015035709A (ja
Inventor
尚義 大川
尚義 大川
祐士 野村
祐士 野村
岡田 純代
純代 岡田
飯塚 史之
史之 飯塚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013165410A priority Critical patent/JP6163954B2/ja
Priority to US14/339,993 priority patent/US9565119B2/en
Publication of JP2015035709A publication Critical patent/JP2015035709A/ja
Priority to US15/381,627 priority patent/US10200291B2/en
Application granted granted Critical
Publication of JP6163954B2 publication Critical patent/JP6163954B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0888Throughput
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/026Capturing of monitoring data using flow identification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/028Capturing of monitoring data by filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/18Protocol analysers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)

Description

本発明は、パケット解析プログラムに関する。
端末間のネットワーク帯域を推測する方法として、ネットワークのトラヒックを、アクティブに診断する方法(以降、「アクティブ診断」という)と、パッシブに診断する方法(以降、「パッシブ診断」という)とがある。アクティブ診断では、診断を行う装置が、予め用意されたネットワーク帯域診断用のパターンをネットワークに流すことにより、ネットワーク帯域を計測する。したがって、診断用のパターンを用意することおよびネットワークに本来不要なパケットが流れてしまうという問題がある。
パッシブ診断では、ネットワークを流れる全てのパケットを計測対象とする。パッシブ診断に関し、監視対象のパケットが集約される経路に到着したパケットをキャプチャし、コネクション毎に、各パケットにおけるクライアントの位置情報に基づく位置ベースでクライアントの通信品質を分析する技術が知られている(例えば、特許文献1,2参照)。
特開2003−258881号公報 特開2012−191440号公報
しかしながら、パッシブ診断では、ネットワークの正確な帯域を計測できないという問題がある。ここで、ネットワークの正確な帯域を計測できないという問題について説明する。
ネットワークでは、常時、帯域の計測に適した連続のパケットが流れるとは限らない。ネットワーク上の端末は、ネットワークの輻輳を防ぐためにパケットの間隔をあけて送信するフロー制御を行う。このため、フロー制御によって送信が遅れるパケットを除けば正確な帯域の計測が可能になる。
一般的に、端末から連続に送出されるパケットのうちACK受信直後に送出されるパケットは、フロー制御の影響を受けることが多いと考えられる。ところが、端末間にある観測点と端末とのパケットの送受信の時間差により、観測点においてACK受信直後に送出されるパケットを識別することが難しい。図21は、端末の送信タイミングと観測点の受信タイミングのズレを示す図である。
図21に示すように、観測点のパケット解析装置において、ACKとACKとの間で受信されたパケットは、端末から連続して送信された連続パケットであるとは限らない。ここでは、パケット解析装置は、d1,d2時点で受信したデータのパケットが連続パケット、d3,d4時点で受信したデータのパケットが連続パケットとする。すると、パケット解析装置は、a1時点で受信されたACKとa2時点で受信されたACKとの間で、d2,d3時点でデータのパケットを受信する。したがって、ACKとACKとの間で受信されたパケットは、連続パケットであるとは限らない。
また、観測点のパケット解析装置は、ACK受信直後に、ACKに対応するデータのパケットを受信するとは限らない。ここでは、パケット解析装置は、a1時点でACKを受信し、受信したACKに対応するデータのパケットをd3時点で受信する。パケット解析装置は、a1時点のACK受信直後に、別のACKに対応する連続パケットをd2時点で受信する。したがって、パケット解析装置は、ACK受信直後に、ACKに対応するデータのパケットを受信するとは限らない。すなわち、観測点において、フロー制御の影響を受けたパケットを特定することは難しい。
1つの側面では、端末間にある観測点において計測に不適切なパケットを特定することを目的とする。
1つの案では、パケット解析プログラムは、コンピュータに、第1の端末と第2の端末との間で通信されるパケットを前記第1の端末と前記第2の端末の間のネットワークのいずれかの地点で取得し、前記第1の端末から前記第2の端末へ送信された第1のACKの取得から前記第1のACKの次のACKである第2のACKの取得までの間に取得された、前記第2の端末から前記第1の端末へ送信されたデータに対応する複数のパケットの取得タイミング、および隣接する2つのパケットの取得タイミング間の間隔に基づいて、取得タイミング間の間隔の中でより大きい間隔を生成するパケットを特定する処理を実行させる。
1つの態様によれば、端末間にある観測点において計測に不適切なパケットを特定することができる。
図1は、実施例に係るパケット解析装置の機能構成を示す図である。 図2は、実施例に係るパケット解析装置の処理の具体例を示す図である。 図3は、コネクション管理テーブルのデータ構造の一例を示す図である。 図4は、ステータステーブルのデータ構造の一例を示す図である。 図5は、帯域解析テーブルのデータ構造の一例を示す図である。 図6は、DATAテーブルのデータ構造の一例を示す図である。 図7は、ACKテーブルのデータ構造の一例を示す図である。 図8は、統計情報テーブルのデータ構造の一例を示す図である。 図9Aは、コネクション管理部の処理のフローチャートを示す図である。 図9Bは、データパケット受信時の処理のフローチャートを示す図である。 図9Cは、ACKパケット受信時の処理のフローチャートを示す図である。 図9Dは、連続パケット判定処理のフローチャートを示す図である。 図10は、連続パケットの個数を特定する場合の処理のシーケンスを示す図である。 図11は、連続パケットを特定する場合の処理のシーケンスを示す図である。 図12は、リセットする処理のシーケンスを示す図である。 図13は、連続パケットの送信パターンが安定していない場合の処理のシーケンスを示す図である。 図14Aは、連続パケットの個数を特定する場合のテーブルの遷移を示す図(1)である。 図14Bは、連続パケットの個数を特定する場合のテーブルの遷移を示す図(2)である。 図14Cは、連続パケットの個数を特定する場合のテーブルの遷移を示す図(3)である。 図14Dは、連続パケットの個数を特定する場合のテーブルの遷移を示す図(4)である。 図14Eは、連続パケットの個数を特定する場合のテーブルの遷移を示す図(5)である。 図15Aは、連続パケットを特定する場合のテーブルの遷移を示す図(1)である。 図15Bは、連続パケットを特定する場合のテーブルの遷移を示す図(2)である。 図15Cは、連続パケットを特定する場合のテーブルの遷移を示す図(3)である。 図15Dは、連続パケットを特定する場合のテーブルの遷移を示す図(4)である。 図15Eは、連続パケットを特定する場合のテーブルの遷移を示す図(5)である。 図15Fは、連続パケットを特定する場合のテーブルの遷移を示す図(6)である。 図16Aは、リセットする場合のテーブルの遷移を示す図(1)である。 図16Bは、リセットする場合のテーブルの遷移を示す図(2)である。 図16Cは、リセットする場合のテーブルの遷移を示す図(3)である。 図16Dは、リセットする場合のテーブルの遷移を示す図(4)である。 図16Eは、リセットする場合のテーブルの遷移を示す図(5)である。 図16Fは、リセットする場合のテーブルの遷移を示す図(6)である。 図17Aは、連続パケットの送信パターンが安定していない場合のテーブルの遷移を示す図(1)である。 図17Bは、連続パケットの送信パターンが安定していない場合のテーブルの遷移を示す図(2)である。 図17Cは、連続パケットの送信パターンが安定していない場合のテーブルの遷移を示す図(3)である。 図18Aは、実施例に係るパケット解析処理の帯域計測の一例を示す図である。 図18Bは、従来の帯域計測の一例を示す図である。 図19Aは、実施例に係るパケット解析処理の帯域計測の別の一例を示す図である。 図19Bは、従来の帯域計測の別の一例を示す図である。 図20は、パケット解析プログラムを実行するコンピュータの一例を示す図である。 図21は、端末の送信タイミングと観測点の受信タイミングのズレを示す図である。
以下に、本願の開示するパケット解析プログラム、パケット解析装置およびパケット解析方法の実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
[実施例に係るパケット解析装置の構成]
図1は、実施例に係るパケット解析装置の機能構成を示す図である。図1に示すように、パケット解析装置1は、端末3と端末4との間で通信されるパケットを、SW2を介して取得し、パッシブにネットワーク帯域を診断する。実施例では、端末3,4は、TCP(Transmission Control Protocol)を用いた通信を行うものとする。
ここで、TCPの通信機能の特性の一例について説明する。端末3がデータのパケットの送信端末であり、端末4がデータのパケットの受信端末であるとする。受信端末4がデータのパケットを受け取った場合に、そのデータのシーケンス番号とデータサイズから次に送られてくる予定のデータのシーケンス番号をACKの確認応答番号に設定したうえで、ACKを送信端末3に伝達する。送信端末3は、ACKを受信し、受信したACKの確認応答番号を確認することで、次のデータのパケットを送信する。
ところが、送信端末3は、データのパケットを1パケットずつ受信、確認および送信を行うと通信効率が悪い。そこで、TCPでは、「ウィンドウ制御」が行われる。ウィンドウ制御とは、送信端末3が、データのパケットを1パケットずつ受信、確認および送信するのではなく、複数のデータのパケットを連続で送信する。すなわち、送信端末3は、複数のデータのパケットをウィンドウサイズと呼ばれる単位で管理し、ACKの確認応答番号を待つことなく、データのパケットを連続で送信する。このウィンドウ制御により通信効率が改善される。なお、ウィンドウ制御によって連続で送信されるデータのパケットのことを「連続パケット」というものとする。
しかしながら、送信端末3が、1度の大量のデータのパケットを送信してしまうと、ネットワークで輻輳が発生する可能性や、受信端末4の通信インタフェースでバッファのオーバフローが発生する可能性がある。そこで、受信端末4がオーバフローしないように、TCPの通信では、連続パケットの量を制限するフロー制御を行う。フロー制御では、一例として、受信端末4は、自端末がオーバフローしない空のバッファ量を示すRWIN(Receiver WINdowsize)を送信端末3に伝える。また、別の一例として、フロー制御では、輻輳が発生しないように徐々に連続で送信するパケット量を増加させ、輻輳が発生した場合に連続パケットの量を減少させる。フロー制御が行われることで、通信の確実性や正確性が保たれる。例えば、フロー制御では、送信端末3の制御量を示すSWIN(Sender WINdowsize)と、RWINの最小値をウィンドウサイズとして、連続パケットの量を制限する。
このようなTCPの通信機能におけるフロー制御の特性を利用して、パケット解析装置1は、キャプチャしたパケットの中から、フロー制御の影響を受けたパケットを特定し、特定したパケットを除いて、連続パケットのみを用いてネットワーク帯域を診断する。「パケットをキャプチャする」とは、ネットワーク上で流れるトラヒックのパケットを取得することを意味する。
パケット解析装置1は、記憶部11および制御部12を有する。
記憶部11は、例えばフラッシュメモリ(Flash Memory)やFRAM(登録商標)(Ferroelectric Random Access Memory)等の不揮発性の半導体メモリ素子等の記憶装置に対応する。記憶部11は、コネクション管理テーブル111、解析情報テーブル112および統計情報テーブル117を有する。解析情報テーブル112には、ステータステーブル113、帯域解析テーブル114、DATAテーブル115およびACKテーブル116が含まれる。
コネクション管理テーブル111は、コネクション毎に、送信元および宛先の通信情報を管理する。コネクション管理テーブル111は、キャプチャされたパケットのコネクションを検索する際に用いられる。
解析情報テーブル112は、解析情報を記憶する。解析情報テーブル112は、ネットワーク帯域が診断される際に用いられる。解析情報テーブル112には、ステータステーブル113、帯域解析テーブル114、DATAテーブル115およびACKテーブル116が含まれる。ステータステーブル113は、コネクション毎の各種ステータスを記憶する。帯域解析テーブル114は、連続パケットの個数分について、キャプチャのタイミング間の間隔を記憶する。帯域解析テーブル114は、コネクション毎にテーブルを有する。DATAテーブル115は、データのパケットがキャプチャされる際に、データのパケットのインデックス番号、到着時刻およびパケット長を記憶する。DATAテーブル115は、コネクション毎にテーブルを有する。ACKテーブル116は、ACKが取得される際に、到着時刻やACKに対応するデータのパケットのインデックス番号を記憶する。ACKテーブル116は、コネクション毎にテーブルを有する。
統計情報テーブル117は、統計情報を記憶する。統計情報テーブル117は、ネットワーク帯域の診断の最終的な統計を記憶する。なお、記憶部11の各種テーブルのデータ構造は、後述する。
制御部12は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。そして、制御部12は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路の電子回路に対応する。または、制御部12は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路に対応する。さらに、制御部12は、出力インタフェース121、通信インタフェース122、コネクション管理部123、連続パケット抽出部124および帯域推定部125を有する。
出力インタフェース121は、出力装置5とのインタフェースである。例えば、出力インタフェース121は、統計情報テーブル117に記憶された統計情報を編集し、出力装置5に出力する。
通信インタフェース122は、端末3と端末4との間で通信されるパケットを、SW2を介してキャプチャする。通信インタフェース122は、キャプチャしたパケットをコネクション管理部123に引き渡す。
コネクション管理部123は、キャプチャされたパケットのコネクションを管理する。例えば、コネクション管理部123は、コネクション管理テーブル111を参照し、キャプチャしたパケットと同じコネクション情報のパケットを、以前にキャプチャしたか否かを判定する。コネクション管理部123は、以前にキャプチャしていないと判定した場合、今回キャプチャしたパケットのコネクション情報をコネクション管理テーブル111に追加する。また、コネクション管理部123は、以前にキャプチャしていると判定した場合、何もしない。コネクション情報には、例えば、送信元のIPアドレス、送信元のポート番号、宛先のIPアドレスおよび宛先のポート番号が含まれる。
連続パケット抽出部124は、ACKのパケットとデータのパケットとの対応関係を解析して、連続パケットを抽出する。そして、連続パケット抽出部124は、連続パケットの個数を特定する。例えば、連続パケット抽出部124は、データのパケットのシーケンス番号およびパケット長と、ACKのパケットの確認応答番号とから、ACKのパケットとデータのパケットとの対応付けを行う。そして、連続パケット抽出部124は、端末3から送信された何個のデータのパケットに対して端末4がACKのパケットを返信するのかを特定する。すなわち、連続パケット抽出部124は、連続パケットの個数を特定する。なお、連続パケット抽出部124は、コネクション管理テーブル111および解析情報テーブル112を用いて連続パケットを抽出する。また、連続パケット抽出部124の詳細については後述する。
帯域推定部125は、ネットワークの帯域を推定する。例えば、帯域推定部125は、連続パケット抽出部124によって抽出された連続パケットのうち、フロー制御の影響を受けたデータのパケットを判断する。すなわち、帯域推定部125は、ACKのパケットに対応したデータのパケットを基準にして、連続パケットの個数分毎に別々に帯域を計測し、帯域解析テーブル114に解析データとして保持する。そして、帯域推定部125は、解析データ毎に平均帯域を算出し、平均帯域の大小関係を比較することによりフロー制御の影響を受けたデータのパケットを特定する。基本的な帯域の計測法(Bandwidth)は、以下の式(1)で表される。
Bandwidth(Mbps)=8×パケットサイズ/パケット間の間隔・・・式(1)
ここで、フロー制御の影響を受けたデータのパケットは、輻輳を抑制するためにACKを待ってから送信されるので、連続パケットに比較して、平均帯域は小さくなる。フロー制御の影響を受けたデータのパケットは、連続パケットに比較して、パケット間の間隔が大きくなるからである。したがって、帯域推定部125は、解析データのうち、平均帯域が最小値になった解析データを、フロー制御の影響を受けたデータのパケット群の解析データと特定する。そして、帯域推定部125は、特定した解析データを除去し、残った解析データを用いてネットワーク帯域を診断する。残った解析データは、フロー制御の影響を受けていない連続パケットのパケット群の解析データとなる。なお、帯域推定部125は、解析情報テーブル112および統計情報テーブル117を用いて帯域を推定する。また、帯域推定部125の詳細については後述する。
次に、実施例に係るパケット解析装置1の処理の具体例について、図2を参照して説明する。図2は、実施例に係るパケット解析装置の処理の具体例を示す図である。図2に示すように、連続パケット抽出部124は、端末3から送信された何個のデータのパケットに対して端末4がACKのパケットを返信するのかを特定する。すなわち、連続パケット抽出部124は、連続パケットの個数を特定する。ここでは、連続パケットの個数は、2個と特定される。
そして、帯域推定部125は、ACKのパケットに対応したデータのパケットを基準にして、連続パケットの個数分毎に別々に帯域を計測する。ここでは、連続パケットが2個であるので、<1>および<2>毎にパケット間の間隔およびパケットサイズが加算される。そして、帯域推定部125は、<1>で算出されたパケットサイズと<1>で算出されたパケット間の間隔を、式(1)に代入して、<1>の平均帯域を算出する。また、帯域推定部125は、<2>で算出されたパケットのサイズと<2>で算出されたパケット間の間隔を、式(1)に代入して、<2>の平均帯域を算出する。
そして、帯域推定部125は、平均帯域の大小関係を比較することによりフロー制御の影響を受けたデータのパケットを特定する。ここでは、<2>のパケット間の間隔の方が<1>のパケット間の間隔より大きいので、<2>の平均帯域が<1>の平均帯域より小さくなる。したがって、<2>の平均帯域の解析データが、フロー制御の影響を受けた、データのパケット群の解析データと特定される。
そして、帯域推定部125は、特定したパケット群の解析データを除去し、残った解析データを用いてネットワーク帯域を診断する。すなわち、帯域推定部125は、<2>の解析データを除去し、残った<1>の解析データから算出される平均帯域を、ネットワーク帯域として推定する。
このように、帯域推定部125は、帯域の推定に不適切なパケットを特定することが可能となる。この結果、帯域推定部125は、特定した不適切なパケットを除去して正確な帯域を計測することができる。
[テーブルのデータ構造]
パケット解析装置1で用いられる各種テーブルのデータ構造を、図3〜図8を参照して説明する。図3は、コネクション管理テーブルのデータ構造の一例を示す図である。図4は、ステータステーブルのデータ構造の一例を示す図である。図5は、帯域解析テーブルのデータ構造の一例を示す図である。図6は、DATAテーブルのデータ構造の一例を示す図である。図7は、ACKテーブルのデータ構造の一例を示す図である。図8は、統計情報テーブルのデータ構造の一例を示す図である。
図3に示すように、コネクション管理テーブル111は、Src.IP111b、Src.Port111c、Dst.IP111dおよびDst.Port111eをConn.ID111aに対応付けて記憶する。Conn.ID111aは、コネクション毎に付けられるインデックス番号である。Src.ID111bは、送信元のIPアドレスである。Src.Port111cは、TCPにおける送信元のポート番号である。Dst.IP111dは、宛先のIPアドレスである。Dst.Port111eは、宛先のTCPにおける宛先のポート番号である。
一例として、Conn.ID111aが「0」である場合に、Src.IP111bとして「10.25.100.100」、Src.Port111cとして「80」と記憶している。Dst.IP111dとして「10.25.200.100」、Dst,Port111eとして「200」と記憶している。
図4に示すように、ステータステーブル113は、Status113b、Start.ID113c、Num.Stream113dおよびEx.RWIN113eをConn.ID113aに対応付けて記憶する。加えて、ステータステーブル113は、Now.Data.ID113fおよびNow.Ack.ID113gをConn.ID113aに対応付けて記憶する。Conn.ID113aは、コネクション毎に付けられるインデックス番号である。Status113bは、帯域計測の際の現在のステータスである。Status113bには、例えば、初期値であることを示す「INIT」、帯域計測で用いられるデータパケットの情報を設定中であることを示す「SET_ID」、帯域計測中であることを示す「MEASURE」が設定される。Start.ID113cは、帯域計測を開始するデータパケットのIDである。Num.Stream113dは、連続パケットの個数である。Ex.RWIN113eは、受信端末4がオーバフローしない空のバッファ量である。Ex.RWIN113eには、前回のRWINが設定される。Now.Data.ID113fは、現在のデータパケットのIDである。Now.Ack.ID113gは、現在のACKパケットのIDである。
一例として、Conn.ID113aが「0」である場合に、Status113bとして「MEASURE」、Start.ID113cとして「2」、Num.Stream113dとして「2」と記憶している。Ex.RWIN113eとして「65700」、Now.Data.ID113fとして「3」、Now.Ack.ID113gとして「2」と記憶している。
図5に示すように、帯域解析テーブル114は、Conn.ID114a、BW.ID114b、Size114cおよびTime.Gap114dを対応付けて記憶する。なお、帯域解析テーブル114は、Conn.ID114a毎にテーブルを有している。Conn.ID114aは、コネクション毎に付けられるインデックス番号である。BW.ID114bは、各テーブル内のインデックス番号である。BW.ID114bには、ステータステーブル113のNum.Stream113dで示される連続パケットの個数分のインデックス番号が設定される。Size114cは、計測されたパケットサイズの合計である。Time.Gap114dは、計測されたパケット間の到着時刻間隔の合計である。
一例として、Conn.ID114aが「0」であってBW.ID114bが「0」である場合に、Size114cとして「3000」、Time.Gap114dとして「240」と記憶している。また、Conn.ID114aが「0」であってBW.ID114bが「1」である場合に、Size114cとして「3000」、Time.Gap114dとして「1320」と記憶している。
図6に示すように、DATAテーブル115は、Conn.ID115a、Data.ID115b、Seq115c、Len115dおよびTime115eを対応付けて記憶する。なお、DATAテーブル115は、Conn.ID115a毎にテーブルを有している。Conn.ID115aは、コネクション毎に付けられるインデックス番号である。Data.ID115bは、データパケットのインデックス番号である。Seq115cは、データパケットのシーケンス番号である。Len115dは、データパケットのパケット長である。Time115eは、データパケットのパケット解析装置1への到着時刻である。
一例として、Conn.ID115aが「0」であってData.ID115bが「0」である場合に、Seq115cとして「1500」、Len115dとして「1500」、Time115eとして「1000」と記憶している。また、Conn.ID115aが「0」であってData.ID115bが「1」である場合に、Seq115cとして「3000」、Len115dとして「1500」、Time115eとして「1120」と記憶している。
図7に示すように、ACKテーブル116は、Conn.ID116a、Ack.ID116b、Ack116c、Time116dおよびData.ID116eを対応付けて記憶する。なお、ACKテーブル116は、Conn.ID116a毎にテーブルを有している。Conn.ID116aは、コネクション毎に付けられるインデックス番号である。Ack.ID116bは、ACKパケットのインデックス番号である。Ack116cは、ACKパケットのACK番号(確認応答番号)である。すなわち、Ack116cには、次に送られてくる予定のデータパケットのシーケンス番号が設定される。Time116dは、ACKパケットのパケット解析装置1への到着時刻である。Data.ID116eは、ACKに対応するデータパケットのインデックス番号(Data.ID)である。すなわち、Data.ID116eは、Ack.ID116bで示されるACKパケットに対応するデータパケットであることを意味する。
一例として、Conn.ID116aが「0」であってAck.ID116bが「0」である場合に、Ack116cとして「3000」、Time116dとして「3000」、Data.ID116eとして「0」と記憶している。Conn.ID116aが「0」であってAck.ID116bが「1」である場合に、Ack116cとして「6000」、Time116dとして「3240」、Data.ID116eとして「2」と記憶している。
図8に示すように、統計情報テーブル117は、Size117bおよびTime.Gap117cをConn.ID117aに対応付けて記憶する。Conn.ID117aは、コネクション毎に付けられるインデックス番号である。Size117bは、計測された連続パケットのパケットサイズの合計である。Time.Gap117cは、計測された連続パケットにおけるパケット間の到着時刻間隔の合計である。
一例として、Conn.ID117aが「0」である場合に、Size117bとして「3000」、Time.Gap117cとして「240」と記憶している。
[パケット解析処理のフローチャート]
次に、実施例に係るパケット解析処理のフローチャートを、図9A〜図9Dを参照して説明する。図9Aは、コネクション管理部の処理のフローチャートを示す図である。図9Bは、データパケット受信時の処理のフローチャートを示す図である。図9Cは、ACKパケット受信時の処理のフローチャートを示す図である。図9Dは、連続パケット判定処理のフローチャートを示す図である。なお、フローチャートでは、データパケットを「DATA」と記載し、ACKパケットを「ACK」と記載する。
図9Aに示すように、コネクション管理部123は、パケットを受信したか否かを判定する(ステップS1)。パケットを受信していないと判定した場合(ステップS1;No)、コネクション管理部123は、パケットを受信するまで、判定処理を繰り返す。
一方、パケットを受信したと判定した場合(ステップS1;Yes)、コネクション管理部123は、受信したパケットのヘッダ情報を抽出する(ステップS1A)。例えば、コネクション管理部123は、IPヘッダから、送信元のIPアドレスおよび宛先のIPアドレスを抽出する。コネクション管理部123は、TCPヘッダから、送信元のポート番号、宛先のポート番号、シーケンス番号、ACK番号(確認応答番号)、パケット長、RWINおよびFINフラグを抽出する。なお、FINフラグとは、コネクションの解放用のパケットであるか否かを示すフラグのことをいう。FINフラグには、一例として、コネクションの解放用のパケットである場合「ON」が設定され、コネクションの解放用のパケットでない場合「OFF」が設定される。
そして、コネクション管理部123は、コネクション管理テーブル111に記憶された情報から、今回受信したコネクション情報に対応するレコードを検索する(ステップS2)。ここでいうコネクション情報とは、送信元のIPアドレス、送信元のポート番号、宛先のIPアドレスおよび宛先のポート番号である。例えば、コネクション管理部123は、コネクション情報を検索条件として、コネクション管理テーブル111から該当するレコードを検索する。なお、送信元の情報と宛先の情報とが入れ替わった場合であっても、同じコネクションであることとする。
そして、コネクション管理部123は、検索の結果、コネクション情報が未登録であるか否かを判定する(ステップS3)。コネクション情報が未登録でないと判定した場合(ステップS3;No)、コネクション管理部123は、ステップS5に移行する。
一方、コネクション情報が未登録であると判定した場合(ステップS3;Yes)、コネクション管理部123は、コネクション情報を、コネクション管理テーブル111に登録する(ステップS4)。例えば、コネクション管理部123は、新たなコネクションID(Conn.ID111a)に対して、送信元のIPアドレス(Src.ID111b)およびポート番号(Src.Port111c)を追加する。加えて、コネクション管理部123は、同じレコードに、宛先のIPアドレス(Dst.IP111d)およびポート番号(Dst.Port111e)を追加する。そして、コネクション管理部123は、ステップS5に移行する。
ステップS5では、コネクション管理部123は、受信されたパケットがコネクション解放用のパケットであるか否かを判定する(ステップS5)。例えば、コネクション管理部123は、受信されたパケットのFINフラグを参照し、FINフラグが「ON」であるか否かを判定する。
受信されたパケットがコネクション解放用のパケットであると判定した場合(ステップS5;Yes)、すなわち、FINフラグが「ON」である場合、コネクション管理部123は、連続パケット判定処理を実行する(ステップS7)。連続パケット判定処理の詳細については後述する。そして、コネクション管理部123は、コネクション情報に関わる全ての情報をコネクション管理テーブル111および解析情報テーブル112から削除する(ステップS8)。具体的には、コネクション管理部123は、コネクションID(Conn.ID)が同じレコードを、コネクション管理テーブル111および解析情報テーブル112から削除する。そして、コネクション管理部123は、ステップS1に移行する。
一方、受信されたパケットがコネクション解放用のパケットでないと判定した場合(ステップS5;No)、すなわち、FINフラグが「ON」でない場合、コネクション管理部123は、当該パケットがDATAであるか否かを判定する(ステップS6)。例えば、コネクション管理部123は、TCPヘッダのパケット長を参照し、パケット長が0ならば、ACKと判定し、パケット長が0より大きければ、DATAと判定する。
当該パケットがDATAであると判定した場合(ステップS6;Yes)、コネクション管理部123は、データパケット受信時の処理へ移行すべく、ステップS9に移行する。一方、当該パケットがDATAでないと判定した場合(ステップS6;No)、すなわち当該パケットがACKである場合、コネクション管理部123は、ACKパケット受信時の処理へ移行すべく、ステップS12に移行する。
[データパケット受信時の処理のフローチャート]
図9Bに示すように、ステップS9では、コネクション管理部123は、ステータステーブル113のステータス(Status113b)が「SET_ID」であるか否かを判定する(ステップS9)。「SET_ID」とは、帯域計測で用いられるDATAの情報を設定中であることを示す。ステータスが「SET_ID」であると判定した場合(ステップS9;Yes)、コネクション管理部123は、ステータステーブル113のStart.ID113cに、現在のDATAのID(Data.ID)を登録する(ステップS10)。そして、コネクション管理部123は、ステップS11に移行する。
一方、ステータスが「SET_ID」でないと判定した場合(ステップS9;No)、コネクション管理部123は、ステップS11に移行する。
ステップS11では、コネクション管理部123は、同じコネクションID(Conn.ID115a)に対応するDATAテーブル115を更新する(ステップS11)。更新する情報は、例えば、現在のDATAのID(Data.ID115a)、シーケンス番号(Seq115c)、パケット長(Len115d)およびDATAの観測点への到着時刻(Time115e)である。観測点とは、パケット解析装置1のことを意味する。また、コネクション管理部123は、ステータステーブル113のNow.Data.ID113fに現在のDATAのIDを更新する。そして、コネクション管理部123は、次のパケットの到着を待つべく、ステップS1に移行する。
[ACKパケット受信時の処理のフローチャート]
図9Cに示すように、ステップS12では、コネクション管理部123は、同じコネクションID(Conn.ID115a)に対応するACKテーブル116を更新する(ステップS12)。更新する情報は、例えば、現在のACKのID(Ack.ID116b)、ACK番号(Ack116c)、ACKの観測点への到着時刻(Time116d)である。観測点とは、パケット解析装置1のことを意味する。また、コネクション管理部123は、ステータステーブル113のNow.Ack.ID113fに現在のACKのIDを更新し、Ex.RWIN113eにTCPヘッダのRWINの値を更新する。
続いて、コネクション管理部123は、RWINが変化したか、またはDATAのパケットロスが検出されたか否かを判定する(ステップS13)。RWINが変化したかまたはDATAのパケットロスが検出されたと判定した場合(ステップS13;Yes)、コネクション管理部123は、連続パケット判定処理(ステップS29)に移行する。
一方、RWINが変化しなかった且つDATAのパケットロスが検出されなかったと判定した場合(ステップS13;No)、連続パケット抽出部124は、ACKとDATAの対応付けを行う(ステップS14)。例えば、連続パケット抽出部124は、DATAテーブル115およびACKテーブル116から、以下の式(2)を満たすDATAのIDを検索する。
DATAテーブル[Data.ID].Seq+DATAテーブル[Data.ID].Len=ACKテーブル[Now.Ack.ID].Ack・・・式(2)
ACKの確認応答番号(Ack116c)には、次に送られてくる予定のDATAのシーケンス番号(直近のDATAのシーケンス番号(Seq115c)+パケット長(Len115d))が設定されているからである。
そして、連続パケット抽出部124は、DATAテーブルに、対応するDATAのIDがあるかどうかを判定する(ステップS15)。対応するDATAのIDがないと判定した場合(ステップS15;No)、連続パケット抽出部124は、連続パケット判定処理(ステップS29)に移行する。
一方、対応するDATAのIDがあると判定した場合(ステップS15;Yes)、連続パケット抽出部124は、ACKとDATAの対応付けができたので、ACKテーブル116のData.ID116eに対応するDATAのIDを記録する。そして、連続パケット抽出部124は、帯域計測を開始してから何個目のACKであるかを判定する(ステップS16)。
帯域計測を開始してから1個目のACKであると判定した場合(ステップS16;1個目)、連続パケット抽出部124は、次のパケットの到着を待つべく、ステップS1に移行する。一方、帯域計測を開始してから2個目のACKであると判定した場合(ステップS16;2個目)、連続パケット抽出部124は、何個のDATAに対してACKを返しているかを特定し、特定したDATA/ACK比をステータステーブル113に登録する(ステップS17)。例えば、連続パケット抽出部124は、ACKテーブル116から、以下の式(3)を満たすDATA/ACK比、すなわちACKに対するDATAの個数(Num.Stream)を特定する。
Num.Stream=ACKテーブル[Now.Ack.ID].Data.ID−ACKテーブル[Now.Ack.ID−1].Data.ID・・・式(3)
現在のACKのIDに対応するDATAのIDと、前回のACKのIDに対応するDATAのIDとの差分が、DATA/ACK比となるからである。そして、連続パケット抽出部124は、特定したDATA/ACK比を、ステータステーブル113のNum.Stream113dに登録する。
そして、帯域推定部125は、DATA/ACK比が1以外であるか否かを判定する(ステップS19)。DATA/ACK比が1以外であると判定した場合(ステップS19;Yes)、帯域推定部125は、帯域解析テーブル114を構築する(ステップS21)。例えば、帯域推定部125は、帯域解析テーブル114のレコードをDATA/ACK比の数分だけ作成する。そして、帯域推定部125は、次のパケットの到着を待つべく、ステップS1に移行する。
一方、DATA/ACK比が1以外でないと判定した場合(ステップS19;No)、帯域推定部125は、連続パケットは送信されないので、ACKテーブル116の、該当するコネクションIDに対応するレコードをリセットする(ステップS22)。そして、帯域推定部125は、ACKテーブル116の1レコード目に、今回受信されたACKの情報を更新する(ステップS23)。そして、帯域推定部125は、次のパケットの到着を待つべく、ステップS1に移行する。
一方、帯域計測を開始してから2個目以降のACKであると判定した場合(ステップS16;2個目以降)、連続パケット抽出部124は、何個のDATAに対してACKを返しているかを特定し、特定したDATA/ACK比を登録する(ステップS18)。特定方法および登録方法は、ステップS17の処理と同一であるので、その説明は省略する。
そして、帯域推定部125は、ステータステーブル113のNum.Stream113dに対して、前回登録したDATA/ACK比と今回登録したDATA/ACK比とが同じであるか否かを判定する(ステップS20)。前回登録したDATA/ACK比と今回登録したDATA/ACK比とが同じでないと判定した場合(ステップS20;No)、帯域推定部125は、連続パケット判定処理(ステップS29)に移行する。
前回登録したDATA/ACK比と今回登録したDATA/ACK比とが同じであると判定した場合(ステップS20;Yes)、帯域推定部125は、ステータステーブル113のステータス(Status113b)を判定する(ステップS24)。
ステータスが「INIT」であると判定した場合(ステップS24;INIT)、帯域推定部125は、ステータステーブル113のステータスを「SET_ID」に変更する(ステップS25)。そして、帯域推定部125は、次のパケットの到着を待つべく、ステップS1に移行する。
ステータスが「SET_ID」であると判定した場合(ステップS24;SET_ID)、帯域推定部125は、ACKに対応するDATAがステータステーブル113のStart.ID113c以降のDATAであるか否かを判定する(ステップS26)。ACKに対応するDATAが、連続パケットの送信パターンが安定した後のDATAであるか否かが判定される。ACKに対応するDATAがStart.ID113c以降のDATAでないと判定した場合(ステップS26;No)、帯域推定部125は、連続パケットの送信パターンが安定していないと判断し、次のパケットの到着を待つべく、ステップS1に移行する。
一方、ACKに対応するDATAがStart.ID113c以降のDATAであると判定した場合(ステップS26;Yes)、帯域推定部125は、ステータステーブル113のステータスを「MEASURE」に変更する(ステップS27)。そして、帯域推定部125は、ステップS28に移行する。
ステータスが「MEASURE」であると判定した場合(ステップS24;MEASURE)、帯域推定部125は、ステップS28に移行する。ステップS28では、帯域推定部125は、DATA/ACK比の個数毎に帯域を計測する(ステップS28)。例えば、帯域推定部125は、ACKに対応するDATAの帯域データを、帯域解析テーブル114のBW.ID114bの1個目のIDに対応するパケット長(Size114c)およびパケット間の到着時刻間隔(Time.Gap114d)に加算する。ここでいう帯域データは、ACKに対応するDATAのパケット長および当該DATAと1個前のDATAとの間のパケット間の到着時刻間隔を意味する。そして、帯域推定部125は、ACKに対応するDATAの1個前のDATAの帯域データを、帯域解析テーブル114のBW.ID114bの2個目のIDに対応するパケット長(Size114c)およびパケット間の到着時刻間隔(Time.Gap114d)に加算する。なお、DATA/ACK比が3であれば、帯域推定部125は、さらに、ACKに対応するDATAの2個前のDATAの帯域データを、3個目のIDに対応するパケット長(Size114c)およびパケット間の到着時刻間隔(Time.Gap114d)に加算する。そして、帯域推定部125は、次のパケットの到着を待つべく、ステップS1に移行する。
ステップS29では、連続パケット判定処理が実行された後、帯域推定部125は、次のパケットの到着を待つべく、ステップS1に移行する。
[連続パケット判定処理のフローチャート]
図9Dに示すように、帯域推定部125は、別々に統計した帯域で一番帯域の狭い解析データを、フロー制御の影響を受けたものとしてフィルタする(ステップS30)。例えば、帯域推定部125は、以下の式(4)により、帯域が一番狭い解析データをフロー制御の影響を受けたパケット群に対応する解析データであると特定する。なお、式(4)では、連続パケットの個数分のインデックス番号であるBW.IDをiとする。
argmin(帯域解析テーブル[i].Size/帯域解析テーブル[i].Time.Gap)・・・式(4)
帯域が一番狭い解析データは、iに対応するSize114c、Time.Gap114dを指す。
そして、帯域推定部125は、フィルタされた後残った解析データを統計情報テーブル117へ加算する(ステップS31)。例えば、帯域推定部125は、帯域解析テーブル114の式(4)により特定された解析データを除去する。そして、帯域推定部125は、残った解析データのSize114cを統計情報テーブル117のSize117bに加算し、当該解析データのTime.Gap114dを統計情報テーブル117のTime.Gap117cに加算する。
そして、帯域推定部125は、解析情報をリセットする(ステップS32)。例えば、帯域推定部125は、解析情報テーブル112のステータステーブル113と、帯域解析テーブル114およびACKテーブル116の該当するコネクションIDに対応するレコードをリセットする。
そして、帯域推定部125は、ACKテーブル116の1レコード目に、今回受信されたACKの情報を更新する(ステップS33)。そして、帯域推定部125は、連続パケット判定処理を終了する。
[連続パケットの個数を特定する場合の処理のシーケンス]
次に、連続パケットの個数を特定する場合の処理のシーケンスを、各種テーブル内のデータの内容を用いながら説明する。図10は、連続パケットの個数を特定する場合の処理のシーケンスを示す図である。なお、以下では、図14A〜図14Eに示される解析情報テーブル112内の各種テーブルを用いながら説明する。なお、シーケンスでは、データパケットを「DATAパケット」と記載し、ACKパケットを「ACKパケット」と記載する。また、コネクションIDが、「0」であるとする。
ステップS101では、パケット解析装置1は、端末3から送信されたDATAパケットD0を受信する。DATAパケットD0には、シーケンス番号(Seq)が「1」と設定され、パケット長(Len)が「1500」と設定されている。すると、パケット解析装置1は、コネクション管理テーブル111を参照して、以前に同じコネクションのパケットを受信したか否かを判定する。ここでは、今回が初めてのパケットであるので、パケット解析装置1は、以前に同じコネクションのパケットを受信していないと判定し、コネクション管理テーブル111に今回のパケットのコネクション情報を登録する。また、DATAパケットD0のTCPヘッダのFINフラグがOFFであるとすると、さらに、パケット解析装置1は、受信したパケットがDATAであるか否かを判定する。ここでは、受信したパケットにおけるTCPヘッダのパケット長(Len)が1500であり0より大きいので、パケット解析装置1は、DATAであると判定する。
そして、パケット解析装置1は、ステータステーブル113のステータス(Status113b)を参照する。ここでは、ステータステーブル113には、Status113bとして「INIT」が設定されている(図14A、S101参照)。そこで、パケット解析装置1は、DATAテーブル115に、コネクションID「0」に対応する情報を追加する。ここでは、DATAテーブル115には、Data.ID115bとして「0」、Seq115cとして「1」、Len115dとして「1500」、Time115eとして「100」が設定される(図14A、S101参照)。なお、Time115eは、DATAパケットD0の到着時刻である。また、パケット解析装置1は、ステータステーブル113のNow.Data.ID113fに現在のDATAパケットD0のIDである「0」を更新する(図14A、S101参照)。そして、ステップS101の処理が終了する。
ステップS102では、パケット解析装置1は、端末4から送信されたACKパケットA0を受信する。ACKパケットA0には、ACK番号(Ack)が「1501」と設定され、RWIN(Rwin)が「65700」と設定されている。すると、パケット解析装置1は、コネクション管理テーブル111を参照して、以前に同じコネクションのパケットを受信したか否かを判定する。ここでは、今回が初めてのパケットでないので、パケット解析装置1は、以前に同じコネクションのパケットを受信したと判定する。また、ACKパケットA0のTCPヘッダのFINフラグがOFFであるとすると、さらに、パケット解析装置1は、受信したパケットがDATAであるか否かを判定する。ここでは、受信したパケットにおけるTCPヘッダのパケット長(Len)が0であるので、パケット解析装置1は、ACKであると判定する。
そして、パケット解析装置1は、ACKテーブル116に、コネクションID「0」に対応する情報を追加する。ここでは、ACKテーブル116には、Ack.ID116bとして「0」、Ack116cとして「1501」、Time116dとして「300」が設定される(図14B、S102参照)。なお、Time116dは、ACKパケットA0の到着時刻である。
そして、パケット解析装置1は、式(2)を用いて、ACKパケットA0とDATAパケットの対応付けを行う。ここでは、現在のACKパケットのIDは「0」であるので、ACKテーブル[0].Ack116cとして「1501」が抽出される(図14B、S102参照)。DATAテーブル115のData.ID115bが「0」であるとき、DATAテーブル[0].Seq115cとして「1」、DATAテーブル[0].Len115dとして「1500」が抽出される(図14B、S102参照)。すると、パケット解析装置1は、Data.IDが「0」であるとき、式(2)を満たし、ACKパケットA0とDATAパケットD0の対応付けができたので、ACKテーブル116のData.ID116eに対応するDATAパケットのIDである「0」を記録する(図14B、S102参照)。そして、ACKパケットA1は1個目のACKであるので、ステップS102の処理が終了する。
ステップS103では、パケット解析装置1は、端末3から送信されたDATAパケットD1を受信する。すると、パケット解析装置1は、コネクション管理テーブル111を参照して、以前に同じコネクションのパケットを受信したか否かを判定する。ここでは、今回が初めてのパケットでないので、パケット解析装置1は、以前に同じコネクションのパケットを受信したと判定する。また、DATAパケットD1のTCPヘッダのFINフラグがOFFであるとすると、さらに、パケット解析装置1は、受信したパケットがDATAであるか否かを判定する。ここでは、受信したパケットにおけるTCPヘッダのパケット長(Len)が1500であり0より大きいので、パケット解析装置1は、DATAであると判定する。
そして、パケット解析装置1は、ステータステーブル113のステータス(Status113b)を参照する。ここでは、ステータステーブル113には、Status113bとして「INIT」が設定されている(図14C、S103参照)。そこで、パケット解析装置1は、DATAテーブル115に、コネクションID「0」に対応する情報を追加する。ここでは、DATAテーブル115には、Data.ID115bとして「1」、Seq115cとして「1501」、Len115dとして「1500」、Time115eとして「500」が設定される(図14C、S103参照)。なお、Time115eは、DATAパケットD1の到着時刻である。また、パケット解析装置1は、ステータステーブル113のNow.Data.ID113fに現在のDATAパケットD1のIDである「1」を更新する(図14C、S103参照)。そして、ステップS103の処理が終了する。
ステップS104では、パケット解析装置1は、端末3から送信されたDATAパケットD2を受信する。パケット解析装置1は、ステップS103と同様に、DATAパケットD2の情報を、DATAテーブル115およびステータステーブル113に記録する(図14D、S104参照)。そして、ステップS104の処理が終了する。
ステップS105では、パケット解析装置1は、端末4から送信されたACKパケットA1を受信する。すると、パケット解析装置1は、コネクション管理テーブル111を参照して、以前に同じコネクションのパケットを受信したか否かを判定する。ここでは、今回が初めてのパケットでないので、パケット解析装置1は、以前に同じコネクションのパケットを受信したと判定する。また、ACKパケットA1のTCPヘッダのFINフラグがOFFであるとすると、さらに、パケット解析装置1は、受信したパケットがDATAであるか否かを判定する。ここでは、受信したパケットにおけるTCPヘッダのパケット長(Len)が0であるので、パケット解析装置1は、ACKであると判定する。
そして、パケット解析装置1は、ACKテーブル116に、コネクションID「0」に対応する情報を追加する。ここでは、ACKテーブル116には、Ack.ID116bとして「1」、Ack116cとして「4501」、Time116dとして「800」が設定される(図14E、S105参照)。なお、Time116dは、ACKパケットA1の到着時刻である。
そして、パケット解析装置1は、式(2)を用いて、ACKパケットA1とDATAパケットの対応付けを行う。ここでは、現在のACKパケットのIDは「1」であるので、ACKテーブル[1].Ack116cとして「4501」が抽出される(図14E、S105参照)。DATAテーブル115のData.ID115bが「2」であるとき、DATAテーブル[2].Seq115cとして「3001」、DATAテーブル[2].Len115dとして「1500」が抽出される(図14D、S104参照)。すると、パケット解析装置1は、Data.IDが「2」であるとき、式(2)を満たし、ACKパケットA1とDATAパケットD2の対応付けができたので、ACKテーブル116のData.ID116eに対応するDATAパケットのIDである「2」を記録する(図14E、S105参照)。
そして、ACKパケットA1は2個目のACKであるので、パケット解析装置1は、式(3)を用いて、何個のDATAパケットに対してACKを返しているかを示すDATA/ACK比を特定する。ここでは、現在のACKパケットA1のIDが「1」であり、ACKテーブル116から、ACKパケットA1に対応するDATAパケットのIDは「2」である(図14E、S105参照)。また、前回のACKパケットA0のIDが「0」であり、ACKテーブル116から、ACKパケットA0に対応するDATAパケットのIDは「0」である(図14D、S104参照)。すると、パケット解析装置1は、式(3)を用いて、「2」個のDATAパケットに対してACKを返していることを特定する。すなわち、DATA/ACK比が「2」である。つまり、連続パケットの個数は「2」である。そこで、パケット解析装置1は、DATA/ACK比である「2」を、ステータステーブル113のNum.Stream113dに登録する(図14E、S105参照)。
そして、パケット解析装置1は、帯域解析テーブル114を構築する。ここでは、パケット解析装置1は、帯域解析テーブル114のレコードを、DATA/ACK比である「2」個分だけ構築する(図14E、S105参照)。そして、ステップS105の処理が終了する。
[連続パケットを特定する場合の処理のシーケンス]
引き続き、連続パケットを特定する場合の処理のシーケンスを、各種テーブル内のデータの内容を用いながら説明する。図11は、連続パケットを特定する場合の処理のシーケンスを示す図である。なお、以下では、図15A〜図15Fに示される解析情報テーブル112内の各種テーブルを用いながら説明する。なお、シーケンスでは、データパケットを「DATAパケット」と記載し、ACKパケットを「ACKパケット」と記載する。また、コネクションIDが、「0」であるとする。
ステップS106では、パケット解析装置1は、端末3から送信されたDATAパケットD3を受信する。パケット解析装置1は、ステップS103と同様に、DATAパケットD3の情報を、DATAテーブル115およびステータステーブル113に記録する(図15A、S106参照)。そして、ステップS106の処理が終了する。
ステップS107では、パケット解析装置1は、端末3から送信されたDATAパケットD4を受信する。パケット解析装置1は、ステップS103と同様に、DATAパケットD4の情報を、DATAテーブル115およびステータステーブル113に記録する(図15B、S107参照)。そして、ステップS107の処理が終了する。
ステップS108では、パケット解析装置1は、端末4から送信されたACKパケットA2を受信する。すると、パケット解析装置1は、コネクション管理テーブル111を参照して、以前に同じコネクションのパケットを受信したか否かを判定する。ここでは、今回が初めてのパケットでないので、パケット解析装置1は、以前に同じコネクションのパケットを受信したと判定する。また、ACKパケットA2のTCPヘッダのFINフラグがOFFであるとすると、さらに、パケット解析装置1は、受信したパケットがDATAであるか否かを判定する。ここでは、受信したパケットにおけるTCPヘッダのパケット長(Len)が0であるので、パケット解析装置1は、ACKであると判定する。
そして、パケット解析装置1は、ACKテーブル116に、コネクションID「0」に対応する情報を追加する。ここでは、ACKテーブル116には、Ack.ID116bとして「2」、Ack116cとして「7501」、Time116dとして「1300」が設定される(図15C、S108参照)。なお、Time116dは、ACKパケットA2の到着時刻である。
そして、パケット解析装置1は、式(2)を用いて、ACKパケットA2とDATAパケットの対応付けを行う。ここでは、現在のACKパケットのIDは「2」であるので、ACKテーブル[2].Ack116cとして「7501」が抽出される(図15C、S108参照)。DATAテーブル115のData.ID115bが「4」であるとき、DATAテーブル[4].Seq115cとして「6001」、DATAテーブル[4].Len115dとして「1500」が抽出される(図15C、S108参照)。すると、パケット解析装置1は、Data.IDが「4」であるとき、式(2)を満たし、ACKパケットA2とDATAパケットD4の対応付けができたので、ACKテーブル116のData.ID116eに対応するDATAパケットのIDである「4」を記録する(図15C、S108参照)。
そして、ACKパケットA3は3個目のACKであるので、パケット解析装置1は、式(3)を用いて、何個のDATAパケットに対してACKを返しているかを示すDATA/ACK比を特定する。ここでは、現在のACKパケットA2のIDが「2」であり、ACKテーブル116から、ACKパケットA2に対応するDATAパケットのIDは「4」である(図15C、S108参照)。また、前回のACKパケットA1のIDが「1」であり、ACKテーブル116から、ACKパケットA1に対応するDATAパケットのIDは「2」である(図15C、S108参照)。すると、パケット解析装置1は、式(3)を用いて、「2」個のDATAパケットに対してACKを返していることを特定する。すなわち、DATA/ACK比が「2」である。つまり、連続パケットの個数は「2」である。そこで、パケット解析装置1は、DATA/ACK比である「2」を、ステータステーブル113のNum.Stream113dに登録する(図15C、S108参照)。
そして、パケット解析装置1は、ステータステーブル113のNum.Stream113dに対して、前回登録したDATA/ACK比と今回登録したDATA/ACK比とが同じであるか否かを判定する。ここでは、前回登録したDATA/ACK比が「2」であり、今回登録したDATA/ACK比は「2」であるので、同じであると判定される。つまり、送信パターンが同じであると判断される。そこで、パケット解析装置1は、ステータステーブル113のStatus113bを、「INIT」から「SET_ID」に変更する(図15C、S108参照)。そして、ステップS108の処理が終了する。
ステップS109では、パケット解析装置1は、端末3から送信されたDATAパケットD5を受信する。パケット解析装置1は、ステータステーブル113のStatus113bが「SET_ID」であるので、Start.ID113cに、現在のDATAのIDであるNow.Data.ID113fを設定する(図15D、S109参照)。そして、パケット解析装置1は、ステップS103と同様に、DATAパケットD5の情報を、DATAテーブル115およびステータステーブル113に記録する(図15D、S109参照)。そして、ステップS109の処理が終了する。
ステップS110では、パケット解析装置1は、端末3から送信されたDATAパケットD6を受信する。パケット解析装置1は、ステップS109と同様に、DATAパケットD6の情報を、DATAテーブル115およびステータステーブル113に記録する(図15E、S110参照)。そして、ステップS110の処理が終了する。
ステップS111では、パケット解析装置1は、端末4から送信されたACKパケットA3を受信する。すると、パケット解析装置1は、コネクション管理テーブル111を参照して、以前に同じコネクションのパケットを受信したか否かを判定する。ここでは、今回が初めてのパケットでないので、パケット解析装置1は、以前に同じコネクションのパケットを受信したと判定する。また、ACKパケットA3のTCPヘッダのFINフラグがOFFであるとすると、さらに、パケット解析装置1は、受信したパケットがDATAであるか否かを判定する。ここでは、受信したパケットにおけるTCPヘッダのパケット長(Len)が0であるので、パケット解析装置1は、ACKであると判定する。
そして、パケット解析装置1は、ACKテーブル116に、コネクションID「0」に対応する情報を追加する。ここでは、ACKテーブル116には、Ack.ID116bとして「3」、Ack116cとして「10501」、Time116dとして「1800」が設定される(図15F、S111参照)。なお、Time116dは、ACKパケットA3の到着時刻である。
そして、パケット解析装置1は、式(2)を用いて、ACKパケットA3とDATAパケットの対応付けを行う。ここでは、現在のACKパケットのIDは「3」であるので、ACKテーブル[3].Ack116cとして「10501」が抽出される(図15F、S111参照)。DATAテーブル115のData.ID115bが「6」であるとき、DATAテーブル[6].Seq115cとして「9001」、DATAテーブル[6].Len115dとして「1500」が抽出される(図15F、S111参照)。すると、パケット解析装置1は、Data.IDが「6」であるとき、式(2)を満たし、ACKパケットA3とDATAパケットD6の対応付けができたので、ACKテーブル116のData.ID116eに対応するDATAパケットのIDである「6」を記録する(図15F、S111参照)。
そして、ACKパケットA4は4個目のACKであるので、パケット解析装置1は、式(3)を用いて、何個のDATAパケットに対してACKを返しているかを示すDATA/ACK比を特定する。ここでは、ステップS108と同様、パケット解析装置1は、式(3)を用いて、「2」個のDATAパケットに対してACKを返していることを特定する。すなわち、DATA/ACK比が「2」である。つまり、連続パケットの個数は「2」である。そこで、パケット解析装置1は、DATA/ACK比である「2」を、ステータステーブル113のNum.Stream113dに登録する(図15F、S111参照)。
そして、パケット解析装置1は、ステータステーブル113のNum.Stream113dに対して、前回登録したDATA/ACK比と今回登録したDATA/ACK比とが同じであるか否かを判定する。ここでは、前回登録したDATA/ACK比が「2」であり、今回登録したDATA/ACK比は「2」であるので、同じであると判定される。つまり、送信パターンが同じであると判断される。
そして、パケット解析装置1は、ステータステーブル113のStatus113bが「SET_ID」であるので、ACKに対応するDATAがステータステーブル113のStart.ID113c以降のDATAであるか否かを判定する。ここでは、ACKパケットA3に対応するDATAパケットD6のIDが「6」であり、Start.ID113cが「5」であるので、ACKパケットA4に対応するDATAパケットD6がStart.ID113c以降のDATAパケットであると判定される。すなわち、ACKパケットA3に対応するDATAパケットD6は、連続パケットの送信パターンが安定した後のDATAパケットであると判断される。そこで、パケット解析装置1は、ステータステーブル113のStatus113bを、「SET_ID」から「MEASURE」に変更する(図15F、S111参照)。
そして、パケット解析装置1は、DATA/ACK比の個数毎に帯域を計測する。ここでは、パケット解析装置1は、ACKパケットA3に対応するDATAパケットD6のパケット長を、帯域解析テーブル114のBW.ID114bの「0」に対応するパケット長(Size114c)に加算する。そして、パケット解析装置1は、ACKパケットA3に対応するDATAパケットD6とDATAパケットD5とのパケット間の到着時刻間隔を、帯域解析テーブル114のBW.ID114bの「0」に対応する到着時刻間隔(Time.Gap114d)に加算する(図15F、S111、t1参照)。また、パケット解析装置1は、DATAパケットD6の1つ前のDATAパケットD5のパケット長を、帯域解析テーブル114のBW.ID114bの「1」に対応するパケット長(Size114c)に加算する。そして、パケット解析装置1は、DATAパケットD5とDATAパケットD4とのパケット間の到着時刻間隔を、帯域解析テーブル114のBW.ID114bの「0」に対応する到着時刻間隔(Time.Gap114d)に加算する(図15F、S111、t2参照)。そして、ステップS111の処理が終了する。
以降、パケット解析装置1は、同様に、連続パケットの送信パターンが安定している限り、帯域解析テーブル114に帯域データをそれぞれ加算していく。その後、パケット解析装置1は、例えば、受信したパケットのTCPヘッダのFINフラグがONである場合に、解析情報をリセットする。このとき、パケット解析装置1は、フロー制御の影響を受けた解析データを除外し、残った解析データを統計情報テーブル117へ加算する。なお、解析情報をリセットするときは、FINフラグがONであった場合に限らず、例えば、RWINに変化があった場合やDATA/ACK比に変化があった場合もある。
[リセットする処理のシーケンス]
そこで、DATA/ACK比に変化があった場合にリセットする処理のシーケンスを、図12を参照して説明する。図12は、リセットする処理のシーケンスを示す図である。なお、以下では、図16A〜図16Fに示される解析情報テーブル112内の各種テーブルを用いながら説明する。なお、シーケンスでは、データパケットを「DATAパケット」と記載し、ACKパケットを「ACKパケット」と記載する。また、コネクションIDが、「0」であるとする。
ステップS112では、パケット解析装置1は、端末3から送信されたDATAパケットD7を受信する。パケット解析装置1は、ステップS109と同様に、DATAパケットD7の情報を、DATAテーブル115およびステータステーブル113に記録する(図16A、S112参照)。そして、ステップS112の処理が終了する。
ステップS113では、パケット解析装置1は、端末3から送信されたDATAパケットD8を受信する。パケット解析装置1は、ステップS110と同様に、DATAパケットD8の情報を、DATAテーブル115およびステータステーブル113に記録する(図16B、S113参照)。そして、ステップS113の処理が終了する。
ステップS114では、パケット解析装置1は、端末4から送信されたACKパケットA4を受信する。パケット解析装置1は、ステップS111と同様に、ACKパケットA4の情報およびACKパケットA4に対応するDATAパケットD8のIDの情報をACKテーブル116に記録する(図16C、S114参照)。また、パケット解析装置1は、ステップS111と同様に、DATA/ACK比の個数毎に帯域を計測し、それぞれ帯域解析テーブル114に記録する(図16C、S114参照)。そして、ステップS114の処理が終了する。
ステップS115では、パケット解析装置1は、端末3から送信されたDATAパケットD9を受信する。パケット解析装置1は、ステップS109と同様に、DATAパケットD9の情報を、DATAテーブル115およびステータステーブル113に記録する(図16D、S115参照)。そして、ステップS115の処理が終了する。
ステップS116では、パケット解析装置1は、端末3から送信されたDATAパケットD10を受信する。パケット解析装置1は、ステップS110と同様に、DATAパケットD10の情報を、DATAテーブル115およびステータステーブル113に記録する(図16E、S116参照)。そして、ステップS116の処理が終了する。
ステップS117では、パケット解析装置1は、端末4から送信されたACKパケットA5を受信する。パケット解析装置1は、ステップS111と同様に、式(3)を用いて、何個のDATAパケットに対してACKを返しているかを示すDATA/ACK比を特定する。ここでは、パケット解析装置1は、ACKパケットA5に対応するDATAパケットがD9であり、式(3)を用いて、「1」個のDATAパケットに対してACKを返していることを特定する。すなわち、DATA/ACK比が「1」である。
そして、パケット解析装置1は、ステータステーブル113のNum.Stream113dに対して、前回登録したDATA/ACK比と今回のDATA/ACK比とが同じであるか否かを判定する。ここでは、前回登録したDATA/ACK比が「2」であり、今回のDATA/ACK比は「1」であるので、同じでないと判定される。つまり、送信パターンが変化したと判断される。
そこで、パケット解析装置1は、過去の連続パケットの情報のみを統計情報テーブル117に加算して、解析情報テーブル112をリセットする。すなわち、パケット解析装置1は、式(4)を用いて、帯域が一番狭い解析データをフロー制御の影響を受けたパケット群に対応する解析データであると特定する。ここでは、BW.IDが「0」である場合、帯域解析テーブル[0].Size/帯域解析テーブル[0].Time.Gapは3000/200(=15)である(図16E、帯域解析テーブル114を参照)。BW.IDが「1」である場合、帯域解析テーブル[1].Size/帯域解析テーブル[1].Time.Gapは3000/800(=3.75)である(図16E、帯域解析テーブル114を参照)。したがって、BW.ID「1」に対応する解析データが、帯域が一番狭い解析データであり、フロー制御の影響を受けたパケット群に対応する解析データであると考えられる。パケット解析装置1は、BW.ID「1」に対応する解析データを除去して、残りの解析データのSize114cおよびTime.Gap114dを統計情報テーブル117にそれぞれ加算する(図16F、統計情報テーブル117を参照)。
そして、パケット解析装置1は、解析情報テーブル112のステータステーブル113、帯域解析テーブル114、ACKテーブル116をリセットする。その後、パケット解析装置1は、今回受信したACKパケットA5の情報をリセット処理したACKテーブル116に再度登録する(図16F、ACKテーブル116を参照)。そして、ステップS117の処理が終了する。
[連続パケットの送信パターンが安定していない場合の処理のシーケンス]
次に、連続パケットの送信パターンが安定していない場合の処理のシーケンスを、図13を参照して説明する。図13は、連続パケットの送信パターンが安定していない場合の処理のシーケンスを示す図である。なお、以下では、図17A〜図17Cに示される解析情報テーブル112内の各種テーブルを用いながら説明する。なお、シーケンスでは、データパケットを「DATAパケット」と記載し、ACKパケットを「ACKパケット」と記載する。また、コネクションIDが、「0」であるとする。
DATAパケットD12〜D14が、端末3から送信されたとする。
ステップS118では、パケット解析装置1は、端末4から送信されたACKパケットA7を受信する。パケット解析装置1は、ステップS111と同様に、ACKパケットA7の情報およびACKパケットA7に対応するDATAパケットD12のIDの情報をACKテーブル116に記録する(図17A、S118参照)。また、パケット解析装置1は、ステップS108と同様に、DATA/ACK比を特定する。ここでは、パケット解析装置1は、「2」個のDATAパケットに対してACKを返していることを特定するとする。そこで、パケット解析装置1は、DATA/ACK比である「2」を、ステータステーブル113のNum.Stream113dに登録する(図17A、S118参照)。そして、パケット解析装置1は、ステータステーブル113のNum.Stream113dに対して、前回登録したDATA/ACK比と今回登録したDATA/ACK比とが同じであるとする。すると、パケット解析装置1は、ステータステーブル113のStatus113bを、「INIT」から「SET_ID」に変更する(図17A、S118参照)。そして、ステップS118の処理が終了する。
ステップS119では、パケット解析装置1は、端末3から送信されたDATAパケットD15を受信する。パケット解析装置1は、ステータステーブル113のStatus113bが「SET_ID」であるので、Start.ID113cに、現在のDATAのIDであるNow.Data.ID113fを設定する(図17B、S119参照)。そして、パケット解析装置1は、ステップS109と同様に、DATAパケットD15の情報を、DATAテーブル115およびステータステーブル113に記録する(図17B、S119参照)。そして、ステップS119の処理が終了する。
ステップS120では、パケット解析装置1は、端末4から送信されたACKパケットA8を受信する。パケット解析装置1は、ステップS111と同様に、ACKパケットA8の情報およびACKパケットA8に対応するDATAパケットD14のIDの情報をACKテーブル116に記録する(図17C、S120参照)。また、パケット解析装置1は、ステップS111と同様に、DATA/ACK比を特定する。ここでは、パケット解析装置1は、「2」個のDATAパケットに対してACKを返していることを特定するとする。そこで、パケット解析装置1は、DATA/ACK比である「2」を、ステータステーブル113のNum.Stream113dに登録する(図17C、S120参照)。そして、パケット解析装置1は、ステータステーブル113のNum.Stream113dに対して、前回登録したDATA/ACK比と今回登録したDATA/ACK比とが同じであるとする。
そして、パケット解析装置1は、ステータステーブル113のStatus113bが「SET_ID」であるので、ACKに対応するDATAがステータステーブル113のStart.ID113c以降のDATAであるか否かを判定する。ここでは、ACKパケットA8に対応するDATAパケットD14のIDが「14」であり、Start.ID113cが「15」であるので、ACKパケットA8に対応するDATAパケットD14がStart.ID113c以降のDATAパケットでないと判定される。すなわち、ACKパケットA8に対応するDATAパケットD14は、連続パケットの送信パターンが安定した後のDATAパケットでないと判断される。そこで、パケット解析装置1は、何もしないで、ステップS120の処理が終了する。
[パケット解析処理の帯域計測の一例]
次に、実施例に係るパケット解析処理の帯域計測の一例を、図18Aを参照して説明する。図18Aは、実施例に係るパケット解析処理の帯域計測の一例を示す図である。なお、連続パケット抽出部124によって特定された連続パケットの個数は、2個であるとする。また、各<1>について、帯域解析テーブル114のBW.ID114bの「0」に対応するSize114cおよびTime.Gap114dに加算される解析データであるとする。各<2>について、帯域解析テーブル114のBW.ID114bの「1」に対応するSize114cおよびTime.Gap114dに加算される解析データであるとする。
図18Aに示すように、パケット解析装置1は、<1>に対するDATAパケットのパケット長およびパケット間の到着時刻間隔を加算する。ここでは、DATAパケットのパケット長を1500とすると、パケット長の合計は、1500×4である。<1>のDATAパケット間の到着時刻間隔を120とすると、パケット間の到着時刻間隔の合計は、120×4である。したがって、<1>の帯域は、以下の式(5)で表される。
<1>の帯域=8×(1500×4)/(120×4)=100.00[Mbps]・・・式(5)
また、パケット解析装置1は、<2>に対するDATAパケットのパケット長およびパケット間の到着時刻間隔を加算する。ここでは、DATAパケットのパケット長を1500とすると、パケット長の合計は、1500×3である。<2>のDATAパケット間の到着時刻間隔をそれぞれ240、1200、240とすると、パケット間の到着時刻間隔の合計は、1200+240×2である。したがって、<2>の帯域は、以下の式(6)で表される。
<2>の帯域=8×(1500×3)/(1200+240×2)=21.23[Mbps]・・・式(6)
したがって、パケット解析装置1は、帯域が一番狭い解析データを、フロー制御の影響を受けたパケット群に対応する解析データであるとしてフィルタする。ここでは、パケット解析装置1は、<2>を除去する。そして、パケット解析装置1は、残った<1>の帯域をネットワークの帯域として推定する。すなわち、推定帯域は、100.00[Mbps]である。
図18Bは、従来の帯域計測の一例を示す図である。図18Bに示すように、帯域は、全てのDATAパケットを用いて計測される。帯域は、以下の式(7)で表される。
帯域=8×(1500×7)/(120×4+240×2+1200)=38.89[Mbps]・・・式(7)
すなわち、推定帯域は、38.39[Mbps]である。
そうすると、パケット解析装置1は、フロー制御の影響を受けたパケット群を除去して、除去した残りのパケット群を用いて帯域を推定するので、全てのパケットを用いて計測する方法に比べて、正確な帯域を測定することができる。
[パケット解析処理の帯域計測の別の一例]
次に、実施例に係るパケット解析処理の帯域計測の別の一例を、図19Aを参照して説明する。図19Aは、実施例に係るパケット解析処理の帯域計測の別の一例を示す図である。図19Aでは、クロストラヒックがある場合の帯域計測である。クロストラヒックとは、ネットワークに流れている他のトラヒックのことをいう。なお、連続パケット抽出部124によって特定された連続パケットの個数は、2個であるとする。また、各<1>について、帯域解析テーブル114のBW.ID114bの「0」に対応するSize114cおよびTime.Gap114dに加算される解析データであるとする。各<2>について、帯域解析テーブル114のBW.ID114bの「1」に対応するSize114cおよびTime.Gap114dに加算される解析データであるとする。
図19Aに示すように、パケット解析装置1は、<1>に対するDATAパケットのパケット長およびパケット間の到着時刻間隔を加算する。ここでは、DATAパケットのパケット長を1500とすると、パケット長の合計は、1500×4である。<1>のDATAパケット間の到着時刻間隔を600、60、120、120とすると、パケット間の到着時刻間隔の合計は、120×2+60+600である。したがって、<1>の帯域は、以下の式(8)で表される。
<1>の帯域=8×(1500×4)/(120×2+60+600)=53.33[Mbps]・・・式(8)
また、パケット解析装置1は、<2>に対するDATAパケットのパケット長およびパケット間の到着時刻間隔を加算する。ここでは、DATAパケットのパケット長を1500とすると、パケット長の合計は、1500×3である。<2>のDATAパケット間の到着時刻間隔をそれぞれ60、720、240とすると、パケット間の到着時刻間隔の合計は、60+720+240である。したがって、<2>の帯域は、以下の式(9)で表される。
<2>の帯域=8×(1500×3)/(60+720+240)=35.29[Mbps]・・・式(9)
したがって、パケット解析装置1は、帯域が一番狭い解析データを、フロー制御の影響を受けたパケット群に対応する解析データであるとしてフィルタする。ここでは、パケット解析装置1は、<2>を除去する。そして、パケット解析装置1は、残った<1>の帯域をネットワークの帯域として推定する。すなわち、推定帯域は、53.33[Mbps]である。
図19Bは、従来の帯域計測の別の一例を示す図である。図19Bに示すように、帯域は、クロストラヒックに相当する部分等を閾値により除去した全てのDATAパケットを用いて計測される。帯域は、以下の式(10)で表される。
帯域=8×(1500×4)/(120×2+60×2)=133.33[Mbps]・・・式(10)
すなわち、推定帯域は、133.33[Mbps]である。本来、可用帯域は、クロストラヒックがあると狭くなるはずであるが、推定帯域は逆に広く見積もってしまう。
そうすると、パケット解析装置1は、フロー制御の影響を受けたパケット群を除去して、除去した残りのパケット群を用いて帯域を推定するので、閾値により除去した全てのパケットを用いて計測する方法に比べて、正確な帯域を測定することができる。
[実施例の効果]
上記実施例によれば、パケット解析装置1は、端末3と端末4との間で通信されるパケットを端末3と端末4の間のネットワークのいずれかの地点で取得する。そして、パケット解析装置1は、端末4から端末3へ送信された第1のACKの取得から第1のACKの次のACKである第2のACKの取得までの間に取得された、端末3から端末4へ送信された複数のデータパケットの取得タイミング、および隣接する2つのデータパケットの取得タイミング間の間隔に基づいて、取得タイミング間の間隔の中でより大きい間隔を生成するデータパケットを特定する。かかる構成によれば、パケット解析装置1は、データパケットの取得タイミング間の間隔の中でより大きい間隔を生成するデータパケットを特定することで、フロー制御の影響を受けたデータパケットを特定できる。すなわち、パケット解析装置1は、帯域の計測に不適切なデータパケットを特定できる。ひいては、パケット解析装置1は、特定した不適切なデータパケットを除去して正確な帯域を計測することを可能にする。
また、上記実施例によれば、パケット解析装置1は、第1のACKに対応するデータパケットの識別番号と第2のACKに対応するデータパケットの識別番号との差分から連続するデータパケットの個数を特定する。そして、パケット解析装置1は、特定した個数分の取得タイミング間の間隔の中でより大きい間隔を生成するデータパケットを特定する。かかる構成によれば、パケット解析装置1は、端末の送信タイミングと観測地点の受信タイミングのズレがあっても、連続するデータパケットを特定することができる。
また、上記実施例によれば、パケット解析装置1は、端末3と端末4との間の通信が途中で変化した場合に、既に取得された複数のデータパケットの取得タイミングおよび取得タイミング間の間隔をリセットする。かかる構成によれば、パケット解析装置1は、通信が途中で変化した際の情報をリセットすることで、帯域の計測からはずすことができ、フロー制御の影響を受けたデータパケットを誤って特定することを防止できる。
[その他]
なお、実施例では、帯域推定部125は、連続パケットの個数が2個の場合の帯域を推定した。しかしながら、帯域推定部125は、連続パケットの個数が3個の場合であっても良いし、4個以上の場合であっても良い。かかる場合に、帯域推定部125は、連続パケットの個数分毎に別々に帯域を計測し、帯域解析テーブル114に解析データとして保持する。そして、帯域推定部125は、別々に計測した帯域で一番帯域の狭い解析データを、フロー制御を受けたものとしてフィルタする。そして、帯域推定部125は、フィルタされた後残った複数の解析データを統計情報テーブル117へ加算する。その後、帯域推定部125は、加算された結果のパケット長およびパケット間の到着時刻間隔を用いて、ネットワーク帯域を推定すれば良い。
また、パケット解析装置1は、既知のパーソナルコンピュータ、ワークステーションなどの情報処理装置に、上記したコネクション管理部123、連続パケット抽出部124および帯域推定部125などの各機能を搭載することによって実現することができる。
また、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、通信インタフェース122とコネクション管理部123とを1個の部として統合しても良い。一方、帯域推定部125を、連続パケットの個数分毎に別々に帯域を計測する計測部と、別々に計測された各帯域からフロー制御の影響を受けた方の帯域を特定する影響特定部を分散しても良い。また、コネクション管理テーブル111、解析情報テーブル112および統計情報テーブル117をパケット解析装置1の外部装置としてネットワーク経由で接続するようにしても良い。
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図1に示したパケット解析装置1と同様の機能を実現するパケット解析プログラムを実行するコンピュータの一例を説明する。図20は、パケット解析プログラムを実行するコンピュータの一例を示す図である。
図20に示すように、コンピュータ200は、各種演算処理を実行するCPU203と、ユーザからのデータの入力を受け付ける入力装置215と、表示装置209を制御する表示制御部207とを有する。また、コンピュータ200は、記憶媒体からプログラムなどを読取るドライブ装置213と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部217とを有する。また、コンピュータ200は、各種情報を一時記憶するメモリ201と、HDD205を有する。そして、メモリ201、CPU203、HDD205、表示制御部207、ドライブ装置213、入力装置215、通信制御部217は、バス219で接続されている。
ドライブ装置213は、例えばリムーバブルディスク211用の装置である。HDD205は、パケット解析プログラム205aおよびパケット解析関連情報205bを記憶する。
CPU203は、パケット解析プログラム205aを読み出して、メモリ201に展開し、プロセスとして実行する。かかるプロセスは、パケット解析装置1の各機能部に対応する。パケット解析関連情報205bは、コネクション管理テーブル111、解析情報テーブル112、統計情報テーブル117に対応する。そして、例えばリムーバブルディスク211が、パケット解析プログラム205aなどの各情報を記憶する。
なお、パケット解析プログラム205aについては、必ずしも最初からHDD205に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカード等の「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ200がこれらからパケット解析プログラム205aを読み出して実行するようにしても良い。
1 パケット解析装置
11 記憶部
12 制御部
111 コネクション管理テーブル
112 解析情報テーブル
113 ステータステーブル
114 帯域解析テーブル
115 DATAテーブル
116 ACKテーブル
117 統計情報テーブル
121 出力インタフェース
122 通信インタフェース
123 コネクション管理部
124 連続パケット抽出部
125 帯域推定部
2 SW
3,4 端末
5 出力装置

Claims (5)

  1. コンピュータに、
    第1の端末と第2の端末との間で通信されるパケットを前記第1の端末と前記第2の端末の間のネットワークのいずれかの地点で取得し、
    連続する複数のデータパケットに対して1個のACKパケットを返信する場合に、前記第1の端末から前記第2の端末へ送信された第1のACKパケットの取得から前記第1のACKパケットの次のACKパケットである第2のACKパケットの取得までの間に取得された、前記第2の端末から前記第1の端末へ送信された複数のデータパケットの取得タイミング、および前記複数のデータパケットと次に取得されるデータパケットとを対象とした隣接する2つのデータパケットの取得タイミング間の間隔に基づいて、取得タイミング間の間隔の中でより大きい間隔を生成するデータパケットを特定する
    処理を実行させることを特徴とするパケット解析プログラム。
  2. 前記特定する処理は、前記第1のACKパケットに対応するパケットの識別番号と前記第2のACKパケットに対応するパケットの識別番号とを用いて、連続するデータパケットの個数を特定し、特定した個数分の取得タイミング間の間隔の中でより大きい間隔を生成するパケットを特定する
    処理を実行させることを特徴とする請求項1に記載のパケット解析プログラム。
  3. 前記特定する処理は、前記第1の端末と前記第2の端末との間の通信が途中で変化した場合に、既に取得された複数のデータパケットの取得タイミングおよび取得タイミング間の間隔をリセットする
    処理を実行させることを特徴とする請求項1に記載のパケット解析プログラム。
  4. 第1の端末と第2の端末との間で通信されるパケットを前記第1の端末と前記第2の端末の間のネットワークのいずれかの地点で取得する取得部と、
    連続する複数のデータパケットに対して1個のACKパケットを返信する場合に、前記第1の端末から前記第2の端末へ送信された第1のACKパケットの取得から前記第1のACKパケットの次のACKパケットである第2のACKパケットの取得までの間に取得された、前記第2の端末から前記第1の端末へ送信された複数のデータパケットの取得タイミング、および前記複数のデータパケットと次に取得されるデータパケットとを対象とした隣接する2つのデータパケットの取得タイミング間の間隔に基づいて、取得タイミング間の間隔の中でより大きい間隔を生成するデータパケットを特定する特定部と、
    を有することを特徴とするパケット解析装置。
  5. コンピュータが、
    第1の端末と第2の端末との間で通信されるパケットを前記第1の端末と前記第2の端末の間のネットワークのいずれかの地点で取得し、
    連続する複数のデータパケットに対して1個のACKパケットを返信する場合に、前記第1の端末から前記第2の端末へ送信された第1のACKパケットの取得から前記第1のACKパケットの次のACKパケットである第2のACKパケットの取得までの間に取得された、前記第2の端末から前記第1の端末へ送信された複数のデータパケットの取得タイミング、および前記複数のデータパケットと次に取得されるデータパケットとを対象とした隣接する2つのデータパケットの取得タイミング間の間隔に基づいて、取得タイミング間の間隔の中でより大きい間隔を生成するデータパケットを特定する
    各処理を実行することを特徴とするパケット解析方法。
JP2013165410A 2013-08-08 2013-08-08 パケット解析プログラム、パケット解析装置およびパケット解析方法 Active JP6163954B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013165410A JP6163954B2 (ja) 2013-08-08 2013-08-08 パケット解析プログラム、パケット解析装置およびパケット解析方法
US14/339,993 US9565119B2 (en) 2013-08-08 2014-07-24 Packet analysis method, packet analysis device, and storage medium
US15/381,627 US10200291B2 (en) 2013-08-08 2016-12-16 Packet analysis method, packet analysis device, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013165410A JP6163954B2 (ja) 2013-08-08 2013-08-08 パケット解析プログラム、パケット解析装置およびパケット解析方法

Publications (2)

Publication Number Publication Date
JP2015035709A JP2015035709A (ja) 2015-02-19
JP6163954B2 true JP6163954B2 (ja) 2017-07-19

Family

ID=52448581

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013165410A Active JP6163954B2 (ja) 2013-08-08 2013-08-08 パケット解析プログラム、パケット解析装置およびパケット解析方法

Country Status (2)

Country Link
US (2) US9565119B2 (ja)
JP (1) JP6163954B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6163954B2 (ja) * 2013-08-08 2017-07-19 富士通株式会社 パケット解析プログラム、パケット解析装置およびパケット解析方法
US9537972B1 (en) * 2014-02-20 2017-01-03 Fireeye, Inc. Efficient access to sparse packets in large repositories of stored network traffic
US10142353B2 (en) 2015-06-05 2018-11-27 Cisco Technology, Inc. System for monitoring and managing datacenters
US10536357B2 (en) 2015-06-05 2020-01-14 Cisco Technology, Inc. Late data detection in data center
JP6949578B2 (ja) * 2017-06-23 2021-10-13 キヤノン株式会社 画像形成装置、画像形成装置の制御方法及びプログラム
CN107508721B (zh) * 2017-08-01 2018-11-02 南京云利来软件科技有限公司 一种基于元数据的数据采集方法
JP7284398B2 (ja) * 2019-06-20 2023-05-31 富士通株式会社 パケット解析プログラムおよびパケット解析装置
US11496925B2 (en) 2020-04-30 2022-11-08 The Nielsen Company (Us), Llc Methods and apparatus to determine virtual WiFi data rate
US11501190B2 (en) * 2020-07-02 2022-11-15 Juniper Networks, Inc. Machine learning pipeline for predictions regarding a network
US20230318958A1 (en) * 2022-03-29 2023-10-05 Cisco Technology, Inc. End-to-end flow visibility in a data network including service appliances

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6541430B1 (en) 2000-03-24 2003-04-01 E. I. Du Pont De Nemours And Company Fluorinated lubricant additives
JP2003258881A (ja) 2002-02-28 2003-09-12 Nippon Telegr & Teleph Corp <Ntt> アダプティブ品質制御方式
JP4160493B2 (ja) * 2003-11-25 2008-10-01 株式会社エヌ・ティ・ティ・ドコモ パケット通信監視装置、及びパケット通信監視方法
CN101048984B (zh) * 2004-10-21 2013-08-21 日本电气株式会社 通信质量测量装置和通信质量测量方法
JP4643330B2 (ja) * 2005-03-28 2011-03-02 ソニー株式会社 通信処理装置、データ通信システム、および通信処理方法、並びにコンピュータ・プログラム
JP5569975B2 (ja) 2011-03-10 2014-08-13 Kddi株式会社 通信品質測定方法および装置
US8437264B1 (en) * 2012-05-18 2013-05-07 Hobnob, Inc. Link microbenchmarking with idle link correction
US9560172B2 (en) * 2013-05-06 2017-01-31 Alcatel Lucent Stateless recognition of keep-alive packets
JP6163954B2 (ja) * 2013-08-08 2017-07-19 富士通株式会社 パケット解析プログラム、パケット解析装置およびパケット解析方法

Also Published As

Publication number Publication date
US9565119B2 (en) 2017-02-07
US20170134295A1 (en) 2017-05-11
US10200291B2 (en) 2019-02-05
JP2015035709A (ja) 2015-02-19
US20150043351A1 (en) 2015-02-12

Similar Documents

Publication Publication Date Title
JP6163954B2 (ja) パケット解析プログラム、パケット解析装置およびパケット解析方法
US7668107B2 (en) Hardware implementation of network testing and performance monitoring in a network device
US10735326B2 (en) Information processing apparatus, method and non-transitory computer-readable storage medium
JP2010028654A (ja) 通信装置及びoamフレーム送信方法
WO2018142703A1 (ja) 異常要因推定装置、異常要因推定方法及びプログラム
US9667722B2 (en) Method and system for non-tagged based latency calculation
US20160285730A1 (en) Apparatus and method for measuring a bandwidth for data transmission between communication devices
US10863372B2 (en) Packet analysis program, packet analyzing apparatus, and packet analysis method for estimating wireless quality according to a packet analysis
JP5206968B2 (ja) 推定方法、装置及びプログラムと、ネットワーク計測システム
CN114422412B (zh) 一种设备检测方法、装置和通信设备
JP2004254025A (ja) 帯域推定方法及びシステム
JP5510340B2 (ja) 輻輳通知方法、輻輳通知装置および輻輳通知プログラム
JP7003467B2 (ja) パケット分類プログラム、パケット分類方法およびパケット分類装置
CN105704057B (zh) 确定突发端口拥塞丢包的业务类型的方法和装置
US8989032B2 (en) Systems and methods for measuring frame loss in multipoint networks
JP2010213239A (ja) パケットロス頻度推定システム、パケットロス頻度推定方法およびプログラム
EP3078175B1 (en) Ordering traffic captured on a data connection
WO2020188937A1 (ja) 情報処理装置、データ収集システム、通信設定方法、及びプログラムが格納されたコンピュータ可読媒体
JP2014116771A (ja) 情報処理システム
JP4454506B2 (ja) 高レートフロー特定化方法並びに高レートフロー特定化システム
JP2009267892A (ja) 巨大フロー特定方法とシステムおよびプログラムとフロー制御システム
JP6554011B2 (ja) タイムアウト時間設定装置とタイムアウト時間設定方法
JP6569565B2 (ja) 管理装置、配信先登録方法及び配信先登録プログラム
US9306854B2 (en) Method and apparatus for diagnosing interface oversubscription and microbursts
CN112737884B (zh) 数据的转发及检测网络性能的方法、相关装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160510

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170307

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170426

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170523

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170605

R150 Certificate of patent or registration of utility model

Ref document number: 6163954

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150