説明

オペレーティングシステムの判定が可能な装置及び方法

【課題】パケットの遅延原因が単純に遅延したものかロスによる再送を行ったため遅延したものかの識別を行うこと。
【解決手段】現パケットが持つべきシーケンス番号である次回シーケンス番号と現パケットのシーケンス番号とを比較し、前パケットの識別子と現パケットの識別子とを比較し、次回シーケンス番号と現パケットのシーケンス番号が一致し、且つ前パケットの識別子と現パケットの識別子が連続しているときに単なる遅延であると判定し、前パケットの識別子と現パケットの識別子が連続していないときに再送による遅延であると判定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パケットの遅延原因を判定するパケットキャプチャ装置に関する。
【背景技術】
【0002】
システムの運用保守に際し、パケットの遅延が起きている場合に、問題を解決するには、その原因を的確に把握する必要がある。問題解決のために、具体的には、パケットの送信者がパケットの送信を遅延させたことが原因でパケット到着が遅延したのか、または、ネットワーク内でパケットがロスしたことが原因でパケットの送信者が再送信したために結果としてパケット到着が遅延したのかを知る必要がある。
【0003】
従来、IP(Internet Protocol)より上位レイヤのプロトコルのうち、TCP(Transmission Control Protocol)等の再送手順を持つプロトコルに関して、パケットロスを識別する方法としては、単調増加するシーケンス番号を手がかりに、シーケンス番号が連続していればパケットロスは発生していないと判断していた。
【0004】
よって、シーケンス番号が連続する場合にはロスとしては認識されず、前回受信したパケットからのパケット到着が遅延するケースにおいては、どのような場合でも送信ホストが単純に送信に時間がかかったと判断していた。
【0005】
特許文献1には、シーケンス番号をもとに、パケット到着の時系列的な情報から、再送信と正常送信を識別する技術が記載されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2005−210515号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、TCPなどIPレイヤよりも上位のレイヤで再送手順を持つプロトコルでは、一般にはパケットがロスした後に、ロスを回復するためのパケットを再送している。仮に送信ホストと計測装置の間でパケットがロスし送信ホストが再送した場合でも、計測装置ではシーケンス番号が連続していることが観測できるため、ロスとは識別せずに単なる遅延と判断してしまうという問題があった。
【0008】
このように従来の方法では、TCPヘッダのシーケンス番号の連続性から、ロスか遅延かを判断しているため、遅延の原因を正しく判断することが出来なかった。
【0009】
本発明の課題は、パケットの遅延の原因が単純に遅延したものか再送を行ったため遅延したのかを正しく識別する装置を提供することである。
【課題を解決するための手段】
【0010】
開示のパケットキャプチャ装置は、受信したパケットのヘッダに記述されているID値およびシーケンス番号を取得する取得部と、前回受信したパケットのID値である前回ID値および次回受信するパケットが持つべきシーケンス番号である次回シーケンス番号を記憶する記憶部と、前記受信したパケットの遅延原因が単なる遅延かロスに伴う再送による遅延かを判定する検出部と、を備え、前記検出部は、前記次回シーケンス番号と前記今回取得したパケットのシーケンス番号とを比較し、前記前回ID値と今回受信したパケットのID値とを比較し、前記次回シーケンス番号と前記今回受信したパケットのシーケンス番号が一致し、且つ前記前回ID値と前記今回受信したパケットのID値が連続しているときに単なる遅延であると判定し、前記前回ID値と前記今回受信したパケットのID値が連続していないときに再送による遅延であると判定することを特徴とする。
【発明の効果】
【0011】
開示の装置によれば、パケットの遅延の原因が単純に遅延したものか再送を行ったため遅延したものかの識別を行うことが出来る。
【図面の簡単な説明】
【0012】
【図1】本発明の第1の実施の形態に係るシステムの構成図である。
【図2】本発明の第1の実施の形態に係るパケットキャプチャ装置の構成図である。
【図3】通信状態テーブルの例である。
【図4】モニタ結果テーブルの例である。
【図5】本発明の実施の形態の識別方法のフローチャートである。
【図6】第2の実施の形態に係るシステムの構成図である。
【図7】本発明の第2の実施の形態に係るパケットキャプチャ装置の構成図である。
【図8】モニタ結果テーブルの例である。
【図9】連続開始IDテーブルの例である。
【図10】本発明の第2の実施の形態に係る識別方法のフローチャートである。
【図11】第3の実施の形態に係るシステムの構成図である
【図12】本発明の第3の実施の形態に係るパケットキャプチャ装置の構成図である。
【図13】モニタ結果テーブルの例である。
【図14】OS種別テーブルの例を示す図である。
【図15】本発明の第3の実施の形態の識別方法のフローチャートである。
【発明を実施するための形態】
【0013】
以下、図面を参照しながら、本発明の実施の形態を説明する。
(第1の実施の形態)
図1は、本発明の第1の実施の形態に係るシステムの構成図である。
【0014】
本発明の実施の形態のシステムは、パケットキャプチャ装置101、送信ホスト102、受信ホスト103、タップ104を備える。
タップ104は、送信ホスト102と受信ホスト103の間に配置される。
パケットキャプチャ装置101は、タップ104と接続し、送信ホスト102および受信ホスト103はそれぞれネットワークを介してタップ104と接続している。
【0015】
送信ホスト102が受信ホスト103にパケットを送信すると、送信ホスト102と受信ホスト103の間にあるタップ104は該パケットをパケットキャプチャ装置101に分岐させる。そして、パケットキャプチャ装置101は、パケットを受信する。
【0016】
図2は、本発明の第1の実施の形態のパケットキャプチャ装置の構成図である。
パケットキャプチャ装置201は、入力部202、処理部210、記憶部220、および出力部203を備える。
【0017】
入力部202は、パケットが入力されるインタフェースである。入力部202は、受信したパケットや情報を処理部210に送信する。
処理部210は、パケット情報取得部211、パケットロス・遅延検出部212、およびモニタ結果出力部213を備える。
【0018】
パケット情報取得部211は、IPヘッダおよびTCPヘッダの情報からTCPのセッションIDを作成する。また、作成したTCPセッションID、シーケンス番号や識別子などのIPヘッダおよびTCPヘッダに記述された情報、およびパケットの受信時刻等をパケットロス・遅延検出部212に送信する。シーケンス番号は、TCPヘッダに記述されており、送信するデータの順序を送信先ホストに通知するために使う番号である。送信先ホストでは、この番号によってデータの順番を正しく並べ替えたり、ロスしたデータの再送要求を出したりすることができる。シーケンス番号により、データがデータ全体の中のどの位置のデータなのかが分かる。
【0019】
識別子は、IPヘッダに記述されており、パケットを送信するごとにインクリメントされる。
パケットロス・遅延検出部212は、通信状態記憶部221に格納されている情報およびパケット情報取得部211からの情報をもとに、パケットが単に遅延したのかロスによる再送があったのかを判定する。また、パケットの総遅延時間やロス数、パケットの受信時刻や識別子などの各種情報を通信状態記憶部221およびモニタ結果記憶部222に書き込む。
【0020】
モニタ結果出力部213は、モニタ結果記憶部222に格納されているモニタ結果テーブルの情報の一部もしくは全てを取得して、出力部203に送信する。例えば、特定のセッションIDの値やセッションIDの上位24bitなどでマスクするフィルタ条件に基づき、記憶されている統計情報を抽出し、出力部203に送信しても良い。
【0021】
記憶部220は、通信状態記憶部221およびモニタ結果記憶部222を備える。
通信状態記憶部221は、図3に示すような通信状態テーブルを格納する。
通信状態テーブルは、項目として、送信元アドレス、TCPセッションID、前回受信時刻、次回SEQ、および前回ID値を有する。
【0022】
送信元アドレスは、送信ホストのIPアドレスである。
TCPセッションIDは、パケットのTCPヘッダの送信元アドレス(SA)、送信元ポート番号(SP)、宛先アドレス(DA)、および宛先ポート(DP)から生成される値である。
前回受信時刻は、前回受信したパケットの受信時刻である。
【0023】
次回SEQは、前回受信したパケットのシーケンス番号に前回受信したパケットのTCPのペイロードサイズを足したもので、次に受信するパケットが持つことを期待されているパケットのシーケンス番号である。
【0024】
前回ID値は、前回受信したパケットのIPヘッダの識別子(ID値)である。
モニタ結果記憶部222は、図4に示すようなモニタ結果テーブルを格納する。
モニタ結果テーブルは、項目として、送信元アドレス、TCPセッションID、パケット送信数、ロス数、ロス率、および総遅延時間を有する。
【0025】
送信元アドレスは、送信ホストのIPアドレスである。
TCPセッションIDは、パケットのTCPヘッダの送信元アドレス(SA)、送信元ポート番号(SP)、宛先アドレス(DA)、および宛先ポート(DP)から生成される値である。
【0026】
パケット送信数は、送信元ホストが送信したパケットのうちパケットキャプチャ装置が受信したパケットの数である。
ロス数は、ロスしたパケットの数である。
【0027】
ロス率は、ロス数をパケット送信数で割り、100を掛けた値であり、パケットの送信におけるロスの割合を示す。
総遅延時間(ミリ秒)は、遅延原因が単なる遅延であるパケットの遅延時間の合計を示す。
【0028】
出力部203は、モニタ結果を出力するインタフェースある。例えば、ネットワーク管理者に統計情報を表示するためのモニタやネットワーク管理装置(NMS)に送信するための通信プロトコルをサポートするネットワークインタフェースである。
【0029】
図5は、本発明の第1の実施の形態の識別方法のフローチャートである。
ステップS501において、入力部202はパケットを受信し、パケット情報取得部211にパケットを送信する。尚、今回受信したパケットを現パケット、今回受信したパケットの一つ前に受信したパケットを前パケット、今回受信したパケットの次に受信するパケットを次パケットと呼ぶ。
【0030】
ステップS502において、パケット情報取得部211は、IPヘッダに記述されている送信元アドレス(SA)と宛先アドレス(DA)並びにTCPヘッダに記述されている送信元ポート番号(SP)と宛先ポート番号(DP)からTCPのセッションIDを作成する。
【0031】
また、パケット情報取得部211は、TCPヘッダのシーケンス番号(SEQ)およびIPヘッダの識別子(ID値)を取得する。そして、セッションID、シーケンス番号、および識別子を1組としてパケットロス・遅延検出部212へ送信する。
また、パケット情報取得部211は、パケットを受信した時刻(パケット受信時刻)をパケットロス・遅延検出部212へ送信する。
【0032】
ステップS503において、パケットロス・遅延検出部212は、パケットロス・遅延検出部212が受信した送信元アドレスおよびセッションIDをキーとして、通信状態テーブルを検索し、該当するエントリがあるか(すなわち、同じ送信元アドレスおよびセッションIDの組を持つエントリがあるか)判定する。該当するエントリがある場合はステップS504に進み、該当するエントリがない場合はステップS509に進む。セッションIDは送信元アドレスと送信先アドレスが逆の場合も同一のセッションIDが生成される。そこで、送信元アドレスも検索のためのキーとして使用することで、区別可能としている。
【0033】
ステップS504において、パケットロス・遅延検出部212は、通信状態テーブルを参照し、通信状態テーブルから該当エントリの前回受信時刻、次回SEQ、および前回ID値を取得する。
【0034】
パケットロス・遅延検出部212は、PRV_IDを前回ID値、CUR_IDを現パケットの識別子、PRV_Tを前回受信時刻、CUR_Tを現パケットの受信時刻、SEQを現パケットのシーケンス番号とする。
【0035】
ステップS505において、パケットロス・遅延検出部212は、次回SEQとSEQを比較し、同じ場合はステップS506に進み、異なる場合はステップS512に進む。
ステップS506において、パケットロス・遅延検出部212は、CUR_ID(現パケットの識別子)とPRV_ID(前回ID値(前パケットの識別子))に1を加算した値を比較し、同じ場合は単なる遅延であると判断しステップS507に進み、異なる場合はロスによる再送による遅延であると判断しステップS508に進む。
【0036】
ステップS507において、パケットロス・遅延検出部212は、現パケットの受信時刻(CUR_T)から前回受信時刻(PRV_T)を引いた値をモニタ結果テーブルの該当エントリの総遅延時間に加算し、モニタ結果テーブルに書き込む。
【0037】
ステップS508において、パケットロス・遅延検出部212は、今回のロス数をCUR_ID(現パケットの識別子)−PRV_ID(前回ID値(前パケットの識別子))−1で算出し、今回のロス数を現在のモニタ結果テーブルのロス数に加算し、モニタ結果テーブルに書き込む。
【0038】
ステップS509において、パケットロス・遅延検出部212は、通信状態テーブルに新規エントリを作成する。
ステップS510において、パケットロス・遅延検出部212は、SEQ(現パケットのシーケンス番号)に現パケットのTCPデータ長(ペイロードサイズ)を加算したものを次回SEQ(次に受信するパケットに期待されるシーケンス番号)として算出し、次回SEQを通信状態テーブルに書き込む。
【0039】
ステップS511において、パケットロス・遅延検出部212は、前回受信時刻(PRV_T)を現パケットの受信時刻(CUR_T)、前回ID値(PRV_ID)を現パケットのID値(CUR_ID)として、通信状態テーブルに書き込む。また、パケット送信数に1を加算して、新たなパケット送信数とし、モニタ結果テーブルに書き込む。
【0040】
次に遅延とロスの判断の具体例を示す。
以下の具体例において、通信状態記憶部221およびモニタ結果記憶部222には、それぞれ図3の通信状態テーブルおよび図4のモニタ結果テーブルが格納されているとする。
【0041】
最初に遅延と判断される場合の例を示す。
先ず、新たにパケットを受信する(ステップS501)。
パケット情報取得部211は、新たに受信したパケット(現パケット)のTCPヘッダおよびIPヘッダからTCPセッションIDを作成する(ステップS502)。パケット情報取得部211は、TCPヘッダのシーケンス番号(SEQ)およびIPヘッダの識別子(ID)を取得する。そして、セッションID、シーケンス番号、および識別子を1組としてパケットロス・遅延検出部212へ送信する。また、パケットを受信した時刻(パケット受信時刻)をパケットロス・遅延検出部212へ送信する。
【0042】
今回受信したパケットでは、送信元アドレス=α、セッションID=A、シーケンス番号(SEQ)=680、識別子(ID値)=336が取得されたものとする。
通信状態テーブルをセッションID「A」と送信元アドレス「α」をキーに検索する(ステップS503)と、通信状態テーブルの1行目に該当エントリが存在するので、次回SEQとして680、前回ID値として335を取得する(ステップS504)。また、PRV_IDを前回ID値、CUR_IDを現パケットの識別子、PRV_Tを前回受信時刻、CUR_Tを現パケットの受信時刻、SEQを現パケットのシーケンス番号とする(ステップS504)。
【0043】
次回SEQとSEQとを比較する(ステップS505)と、共に680で同一である。
次にCUR_ID(=336)とPRV_ID(=335)に1を足したものを比較する(ステップS506)と、共に336で同一である。
【0044】
次回SEQ(=680)とSEQ(=680)とが同一であり、かつ現パケットの識別子(=336)は前回ID値(=335)から連続して増加しているため、現パケットは遅延であると判断する。
【0045】
モニタ結果テーブルの総遅延時間に現パケットの受信時刻から前回受信時刻を引いた値を加算した値が書き込まれる(ステップS507)。
次に受信するパケットに期待されるシーケンス番号(次回SEQ)を算出し、通信状態テーブルに書き込む(ステップS510)。
【0046】
前回受信時刻(PRV_T)を現パケットの受信時刻(CUR_T)、前回ID値(PRV_ID)を現パケットのID値(CUR_ID)として、通信状態テーブルに書き込む。また、パケット送信数に1を加算した値がモニタ結果テーブルに書き込まれ、パケット送信数は31となる(ステップS511)。
【0047】
次にロスと判断される場合の例を示す。
先ず、新たにパケットを受信する(ステップS501)。
パケット情報取得部211は、新たに受信したパケット(現パケット)のTCPヘッダおよびIPヘッダからTCPセッションIDを作成する(ステップS502)。パケット情報取得部211は、TCPヘッダのシーケンス番号(SEQ)およびIPヘッダの識別子(ID)を取得する。そして、セッションID、シーケンス番号、および識別子を1組としてパケットロス・遅延検出部212へ送信する。また、パケットを受信した時刻(パケット受信時刻)をパケットロス・遅延検出部212へ送信する。
【0048】
今回受信したパケットでは、送信元アドレス=α、セッションID=A、シーケンス番号(SEQ)=680、識別子(ID値)=337が取得されたものとする。
通信状態テーブルをセッションID「A」と送信元アドレス「α」をキーに検索する(ステップS503)と、通信状態テーブルの1行目に該当エントリが存在するので、次回SEQとして680、前回ID値として335を取得する(ステップS504)。また、PRV_IDを前回ID値、CUR_IDを現パケットの識別子、PRV_Tを前回受信時刻、CUR_Tを現パケットの受信時刻、SEQを現パケットのシーケンス番号とする(ステップS504)。
【0049】
次回SEQとSEQとを比較する(ステップS505)と、共に680で同一である。
次にCUR_ID(=337)とPRV_ID(=335)に1を足したものを比較する(ステップS506)と、これらは異なっている。
【0050】
次回SEQ(=680)とSEQ(=680)とが同一であるが、現パケットの識別子(=337)は前回ID値(=335)から連続して増加していないため、現パケットは再送されたパケット、すなわち遅延原因はロスによる再送であると判断する(ステップS506)。
【0051】
ロス数を算出すると、現パケットのID値−前回ID値−1=337−335−1=1となる。そして、モニタ結果テーブルの現在のロス数0に今回算出したロス数1を加算した値、すなわち、1を書き込む(ステップS508)。
【0052】
次に受信するパケットに期待されるシーケンス番号(次回SEQ)を算出し、通信状態テーブルに書き込む(ステップS510)。
前回受信時刻(PRV_T)を現パケットの受信時刻(CUR_T)、前回ID値(PRV_ID)を現パケットのID値(CUR_ID)として、通信状態テーブルに書き込む。また、パケット送信数に1を加算した値をモニタ結果テーブルに書き込み、パケット送信数は31となる(ステップS511)。
【0053】
(第2の実施の形態)
第2の実施の形態では、1つの送信ホストが複数の受信ホストにパケットを送信している場合を説明する。
【0054】
図6は、第2の実施の形態に係るシステムの構成図および概念図である。
本発明の第2の実施の形態のシステムは、パケットキャプチャ装置601、送信ホスト602、受信ホスト603−n(n=1〜3)、タップ604を備える。
【0055】
タップ604は、送信ホスト602と受信ホスト603の間に配置される。
パケットキャプチャ装置601はタップ604と接続し、送信ホスト602および受信ホスト603はそれぞれネットワークを介してタップ604と接続している。
【0056】
送信ホスト602が受信ホスト603にパケットを送信すると、送信ホスト102と受信ホスト603の間にあるタップ604は該パケットをパケットキャプチャ装置601に分岐させる。そして、パケットキャプチャ装置601は、パケットを受信する。
尚、受信ホスト603−6103−2、603−3のIPアドレスはそれぞれA、B、Cとする。
【0057】
図6では、パケット611、パケット612、パケット613、パケット614の順で送信ホスト602から送信されている。パケット611、パケット612、パケット613、およびパケット614は、それぞれ受信ホスト603−1、受信ホスト603−2、受信ホスト603−3、および受信ホスト603−1に送信されている。
また、Seqはパケットのシーケンス番号であり、IDは識別子である。
【0058】
受信ホスト603−1に対しては、ロス無くパケットが送信されているが、パケット611とパケット614の送信の間に他の受信ホストに対してパケットを送信しているため、パケット611の識別子(100)とパケット614の識別子(103)は連続していない。この場合、第1の実施の形態の識別方法を用いると、実際にはロスが無いが、ロスと判断されてしまう。第2の実施の形態では、このような場合でも、パケット614が遅延であると判断する。
【0059】
第2の実施の形態では、送信ホストが複数の受信ホストにパケットを送信していて、同一のTCPセッションに対して識別子が連続していない場合でも、正しく判定できるようにする。
【0060】
図7は、本発明の第2の実施の形態に係るパケットキャプチャ装置の構成図である。
パケットキャプチャ装置701は、入力部702、処理部710、記憶部720、および出力部703を備える。
【0061】
入力部702は、パケットが入力されるインタフェースである。入力部702は、受信したパケットや情報を処理部に送信する。
処理部710は、パケット情報取得部711、パケットロス・遅延検出部712、およびモニタ結果出力部713を備える。
【0062】
パケット情報取得部711は、IPヘッダおよびTCPヘッダの情報からTCPのセッションIDを作成する。また、作成したTCPセッションID、シーケンス番号や識別子などのIPヘッダおよびTCPヘッダに記述された情報、およびパケットの受信時刻等をパケットロス・遅延検出部712に送信する。
【0063】
パケットロス・遅延検出部712は、通信状態記憶部721に格納されている情報およびパケット情報取得部711からの情報をもとに、パケットが遅延かロスかを判定する。また、パケットの総遅延時間やロス数、パケットの受信時刻や識別子などの各種情報を通信状態記憶部721、モニタ結果記憶部722、および連続開始ID記憶部723に書き込む。
【0064】
モニタ結果出力部713は、モニタ結果記憶部722に格納されているモニタ結果テーブルの情報の一部もしくは全てを取得して、出力部703に送信する。例えば、特定のセッションIDの値やセッションIDの上位24bitなどでマスクするフィルタ条件に基づき、記憶されている統計情報を抽出し、出力部203に送信しても良い。
【0065】
記憶部720は、通信状態記憶部721、モニタ結果記憶部722、および連続開始ID記憶部723を備える。
通信状態記憶部721は、図3に示すような通信状態テーブルを格納する。
通信状態テーブルは、第1の実施の形態と同様である。
【0066】
モニタ結果記憶部722は、図8に示すようなモニタ結果テーブルを格納する。
モニタ結果テーブルは、項目として、送信元アドレス、TCPセッションID、パケット送信数、判断不能回数、および総遅延時間を有する。
【0067】
送信元アドレス、TCPセッションID、パケット送信数、および総遅延時間に関しては、第1の実施の形態と同様である。
判断不能回数は、遅延であるかロスであるかの判断が出来なかった回数を示す。
【0068】
連続開始ID記憶部723は、図9に示すような連続開始IDテーブルを備える。連続開始IDテーブルは、項目として、送信元アドレス、連続開始ID値、直前ID値、増加数を有する。
【0069】
送信元アドレスは、送信ホストのIPアドレスである。
連続開始ID値は、ロス無くパケットを送信しているときの最初のパケットのIPヘッダの識別子(ID値)である。
【0070】
直前ID値は、送信元ホストが前回送信したパケットのIPヘッダの識別子(ID値)である。
増加数は、パケットがロス無く連続しているとみなすことが出来る範囲である。
【0071】
例えば、1行目のエントリを参照すると、送信元アドレスはα、連続開始ID値は1、直前ID値は335である。これにより、送信元アドレスがαの送信ホストは、識別子(ID値)が1のパケットから識別子(ID値)が335である直前のパケットまで、ロス無く連続して送信していることがわかる。
【0072】
図9は、本発明の第2の実施の形態に係る識別方法のフローチャートである。
ステップS1001において、入力部202はパケットを受信し、パケット情報取得部にパケットを送信する。
【0073】
ステップS1002において、パケット情報取得部711は、TCPヘッダまたはIPヘッダに記述されている、送信元アドレス(SA)、送信元ポート番号(SP)、宛先アドレス(DA)、および宛先ポート番号(DP)からTCPのセッションIDを作成する。
【0074】
また、パケット情報取得部711は、TCPヘッダのシーケンス番号(SEQ)およびIPヘッダの識別子(ID)を取得する。そして、セッションID、シーケンス番号、および識別子を1組としてパケットロス・遅延検出部712へ送信する。
【0075】
ステップS1003において、パケットロス・遅延検出部712は、通信状態テーブルを参照し、パケットロス・遅延検出部712が受信したセッションIDおよび送信元アドレスの組と同じセッションIDおよび送信元アドレスの組が通信状態テーブルにあるか判定する。
【0076】
同じセッションIDおよび送信元アドレスの組がある場合ステップS1004に進み、同じセッションIDおよび送信元アドレスの組がない場合ステップS1006に進む。
ステップS1004において、パケットロス・遅延検出部712は、送信元アドレスが連続開始IDテーブルに存在するかチェックし、送信元アドレスが存在した場合はステップS1005に進み、存在しない場合はステップS1007に進む。
【0077】
ステップS1005において、CON_IDを連続開始IDテーブルの該当エントリの連続開始ID値、L_IDを連続開始IDテーブルの該当エントリの直前ID値、CUR_IDを現パケットのIPヘッダのID値とする。
【0078】
ステップS1006において、パケットロス・遅延検出部712は、パケット通信状態テーブルに新規エントリを作成する。
ステップS1007において、パケットロス・遅延検出部712は、連続開始IDテーブルに新規エントリを作成する。
【0079】
ステップS1008において、パケットロス・遅延検出部712は、連続開始IDテーブルの該当エントリの連続開始ID値および直前ID値を現パケットのIPヘッダのID値とし、連続開始IDテーブルに書き込む。
【0080】
ステップS1009において、パケットロス・遅延検出部712は、通信状態テーブルを参照し、通信状態テーブルから当該セッションIDの前回受信時刻、次回SEQ、および前回ID値を取得する。
【0081】
パケットロス・遅延検出部712は、PRV_IDを前回ID値、PRV_Tを前回受信時刻、CUR_Tを現パケットの受信時刻、SEQを現パケットのシーケンス番号とする。
ステップS1010において、パケットロス・遅延検出部712は、次回SEQとSEQを比較し、同じ場合はステップS1011に進み、異なる場合は遅延とロスの識別が出来ないのでステップS1017に進み、テーブルの更新処理を行う。
【0082】
ステップS1011において、パケットロス・遅延検出部712は、現パケットのID値(CUR_ID)と直前ID値(L_ID)に定数Nを加算したものを比較する。CUR_IDがL_ID+N以下である場合はステップS1012に進み、CUR_IDがL_ID+Nより大きい場合はステップS1014に進む。ステップS1011では、CUR_IDがL_IDよりN以下しか増加していない場合は、ID値は連続しているとみなしている。
【0083】
ステップS1012において、パケットロス・遅延検出部712は、該当エントリの連続開始ID値(CON_ID)と前パケットのID値(PRV_ID)を比較する。CON_IDがPRV_ID以下の場合は、遅延であると判定してステップS1013に進み、CON_IDがPRV_IDより大きい場合はステップS1015に進む。
【0084】
ステップS1013において、受信時刻から前回受信時刻を減算した値をモニタ結果テーブルの総遅延時間に加算する。
ステップS1014において、連続開始IDテーブルの該当エントリの連続開始ID値に現パケットのID値(CUR_ID)を書き込む。ステップS1014では、CUR_IDがL_ID+Nより大きいので、それ以前のID値は連続していないとみなし、連続開始ID値が現パケットのID値で更新される。
【0085】
ステップS1015において、パケットロス・遅延検出部712は、ID値が連続していないので、遅延かロスか判断不能であると判断し、モニタ結果テーブルの判断不能回数に1加算する。
【0086】
ステップS1016において、現パケットのシーケンス番号に現パケットのデータ長(ペイロードサイズ)を加算したものを次パケットに期待されるシーケンス番号(次回SEQ)として算出し、次回SEQを通信状態テーブルに書き込む。
【0087】
ステップS1017において、通信状態テーブルの前回受信時刻に現パケットの受信時刻、前回ID値に現パケットのID値をそれぞれ書き込む。また、モニタ結果テーブルのパケット送信数に1加算する。また、連続開始IDテーブルの該当エントリの直前ID値に現パケットのID値を書き込む。
【0088】
次に第2の実施の形態の具体例について述べる。
以下の具体例において、通信状態記憶部721、モニタ結果記憶部722、および連続開始ID記憶部723には、それぞれ図3の通信状態テーブル、図8のモニタ結果テーブル、および図9の連続開始IDテーブルが格納されているとする。
【0089】
先ず、新たにパケットを受信する(ステップS1001)。
パケット情報取得部711は、新たに受信したパケット(現パケット)のTCPヘッダおよびIPヘッダからTCPセッションIDを作成する(ステップS1002)。パケット情報取得部711は、TCPヘッダのシーケンス番号(SEQ)およびIPヘッダの識別子(ID値)を取得する。そして、セッションID、シーケンス番号、および識別子を1組としてパケットロス・遅延検出部712へ送信する。また、パケットを受信した時刻(パケット受信時刻)をパケットロス・遅延検出部712へ送信する。
【0090】
今回受信したパケットでは、送信元アドレス=α、セッションID=B、シーケンス番号(SEQ)=421、識別子(ID値)=336が取得されたものとする。
通信状態テーブルをセッションID「B」と送信元アドレス「α」をキーに検索する(ステップS1003)と、通信状態テーブルの2行目に該当エントリが存在する。
【0091】
連続開始IDテーブル送信元アドレス「α」をキーに検索する(ステップS1004)と、連続開始テーブルの1行目に該当エントリが存在する。
CON_IDを連続開始IDテーブルの該当エントリの連続開始ID値(1)、L_IDを連続開始IDテーブルの該当エントリの直前ID値(335)、CUR_IDを現パケットのIPヘッダの識別子(ID値)(336)とする(ステップS1005)。また、連続開始IDテーブルから増加数Nとして1を取得する。
【0092】
次回SEQとして421、前回ID値として211を取得する(ステップS1009)。また、PRV_IDを前回ID値(211)、PRV_Tを前回受信時刻、CUR_Tを現パケットの受信時刻、SEQを現パケットのシーケンス番号(421)とする(ステップS1109)。
【0093】
次回SEQとSEQとを比較する(ステップS1010)と、共に421で同一である。
CON_ID(336)とL_ID(335)に増加数N(1)を加算したものを比較すると(ステップS1011)、CON_IDはL_ID+N以下である。
CON_ID(1)とPRV_ID(211)を比較すると(ステップS1012)、CON_IDはPRV_ID以下である。
【0094】
以上から、現パケットのID値は連続しているとみなし、ロスによる再送は無く、パケットは単に遅延していると判断する。
以下、モニタ結果テーブル、通信状態テーブル、および連続開始IDテーブルの更新を行う(ステップS1013、S1016、S1017)。
第2の実施形態のパケットキャプチャ装置によれば、送信元ホストが複数の送信先ホストと通信している場合でも、遅延を識別することが出来る。
【0095】
(第3の実施の形態)
第3の実施の形態においては、送信元ホストがLinux(登録商標)などの特定のOS(Operation System)の場合を説明する。
図11は、本発明の第3の実施の形態のシステム構成図および概念図である。
【0096】
本発明の第3の実施の形態のシステムは、パケットキャプチャ装置1101、送信ホスト1102、受信ホスト1103−n(n=1〜3)、タップ1104を備える。
タップ1104は、送信ホスト1102と受信ホスト1103の間に配置される。
【0097】
パケットキャプチャ装置1101はタップ1104と接続し、送信ホスト1102および受信ホスト1103はそれぞれネットワークを介してタップ1104と接続している。
送信ホスト1102が受信ホスト1103にパケットを送信すると、送信ホスト102と受信ホスト1103の間にあるタップ1104は該パケットをパケットキャプチャ装置1101に分岐させる。そして、パケットキャプチャ装置1101は、パケットを受信する。
尚、受信ホスト1103−1、1103−2、1103−3のIPアドレスはそれぞれA、B、Cとする。
【0098】
図11では、パケット1111、パケット1112、パケット1113、パケット1114の順で送信ホスト1102から送信されている。パケット1111、パケット1112、パケット1113、およびパケット1114は、それぞれ受信ホスト1103−1、受信ホスト1103−2、受信ホスト1103−3、および受信ホスト1103−1に送信されている。
【0099】
また、Seqはパケットのシーケンス番号であり、IDは識別子である。
送信ホスト1101が例えばLinux(登録商標)等の特定のOS(Operation System)を使用している場合は、IPヘッダの識別子(ID値)はTCPコネクション毎にランダムな値から開始され、1パケット送信毎に1ずつ増加するが、送信ホストに共通する値ではない。
【0100】
受信ホスト1103−1に送信されたパケット1111の識別子は100であり、受信ホスト1103−2に送信されたパケット1112の識別子は500であり、受信ホスト1103−3に送信されたパケット1113の識別子は1000である。
【0101】
このように、TCPセッションごとに異なる識別子が初期値として与えられる。受信ホスト1103−1に送信されるパケット1114の識別子は101であり、同じTCPセッションに対するパケット1111に対して識別子は連続している。
【0102】
この性質を利用すれば、同一のTCPセッションに属するパケットであれば、必ず識別子は1ずつ増加することが断定できるので、これをロスと遅延の識別に利用する。
識別子が同一のTCPセッションに属するパケットに対して必ず1ずつ増加すれば、第1の実施の形態の識別方法(図5のフローチャート)が利用できる。
それ以外の場合は、第2の実施の形態の識別方法(図9のフローチャート)を利用する。
【0103】
第3の実施の形態のパケットキャプチャ装置1101は、第1の実施の形態のパケットキャプチャ装置201および第2のパケットキャプチャ装置701の両方の機能を有し、適宜使い分けている。
どちらの識別方法を使用するかは、送信ホストのOSの種別により判断する。
【0104】
図12は、本発明の第3の実施の形態のパケットキャプチャ装置の構成図である。
パケットキャプチャ装置1201は、入力部1202、出力部1203、処理部1210、および記憶部1220を備える。
【0105】
入力部1202は、パケットが入力されるインタフェースである。入力部202は、受信したパケットや情報を処理部に送信する。
処理部1210は、パケットのヘッダの情報の取得、取得した情報に基づく遅延の原因の識別、結果の送信などの処理を行う。
【0106】
出力部1203は、モニタ結果を出力するインタフェースであり、ネットワーク管理者に統計情報を表示するための画面であってもよく、ネットワーク管理装置(NMS)に送信するための通信プロトコルをサポートするネットワークインタフェースであってもよい良い。
処理部1210は、パケット情報取得部1211、パケットロス・遅延検出部1212、およびモニタ結果出力部1213を備える。
【0107】
パケット情報取得部1211は、IPヘッダおよびTCPヘッダの情報からTCPのセッションIDを作成する。また、作成したTCPセッションID、シーケンス番号や識別子などのIPヘッダおよびTCPヘッダに記述された情報、およびパケットの受信時刻等をパケットロス・遅延検出部1212に送信する。
【0108】
パケットロス・遅延検出部1212は、通信状態記憶部1221に格納されている情報およびパケット情報取得部1211からの情報をもとに、OS種別の識別やパケットが遅延かロスかを判定する。また、パケットの総遅延時間やロス数、パケットの受信時刻や識別子などの各種情報を通信状態記憶部1221、モニタ結果記憶部1222、連続開始ID記憶部1223、およびOS種別記憶部1224に書き込む。
【0109】
モニタ結果出力部1213は、モニタ結果記憶部1222に格納されているモニタ結果テーブルの情報の一部もしくは全てを取得して、出力部1203に送信する。例えば、特定のセッションIDの値やセッションIDの上位24bitなどでマスクするフィルタ条件に基づき、記憶されている統計情報を抽出し、出力部1203に送信しても良い。
【0110】
記憶部1220は、通信状態記憶部1221、モニタ結果記憶部1222、連続開始ID記憶部1223、およびOS種別記憶部1224を備える。
通信状態記憶部1221は、図3に示すような通信状態テーブルを備える。通信状態テーブルについては、第2の実施の形態と同様である。
【0111】
モニタ結果記憶部1222は、図13に示すようなモニタ結果テーブルを備える。モニタ結果テーブルは、項目として、送信元アドレス、TCPセッションID、パケット送信数、ロス数、ロス率、総遅延時間、および判断不能回数を有する。
【0112】
送信元アドレス、TCPセッションID、パケット送信数、ロス数、ロス率、および総遅延時間に関しては、第1の実施の形態と同様である。また、判断不能回数に関しては、第2の実施の形態と同様である。
【0113】
連続開始ID記憶部1223は、図9に示すような連続開始IDテーブルを備える。連続開始IDテーブルについては、第2の実施の形態と同様である。
OS種別記憶部1224は、図14に示すようなOS種別テーブルを備える。
OS種別テーブルは、項目として、送信元アドレスとOSタイプを有する。送信元アドレスには、送信ホストのIPアドレスが格納される。OSタイプには、送信ホストのOSの種類が格納される。
【0114】
OS種別テーブルには、送信元アドレスとOSタイプが対応するように格納されている。
OSタイプBは、TCPセッションごとに異なる識別子を与え、同一のTCPセッションに属するパケットに対して識別子を1ずつ増加させるOSであり、例えばLinuxが該当する。OSタイプAは、TCPセッションごとに異なる識別子を与えないOSである。
【0115】
図15は、第3の実施の形態の識別方法のフローチャートである。
ステップS1501において、パケットを受信する。
ステップS1502において、受信したパケットがSYN/ACKパケットかどうか判定する。SYN/ACKパケットの場合はステップS1503に進み、SYN/ACKパケットでない場合はステップS1504に進む。
【0116】
SYN/ACKパケットとは、TCPコネクションの確立時に使用されるパケットである。
TCPコネクションの確立手順は、先ずクライアントが接続要求(SYNパケット)をサーバに送信する。サーバは、接続要求に対する応答(SYN/ACKパケット)をクライアントに送信する。クライアントは、SYN/ACKパケットに対して、ACKパケットをサーバに送信する。TCPコネクションは上記手順により確立される。
【0117】
SYN/ACKパケットかどうかは、TCPヘッダのSYNフラグおよびACKフラグが1であるかをチェックすることで行う。SYNフラグおよびACKフラグが1であれば、SYN/ACKパケットであると判断する。
【0118】
ステップS1503において、パケットのIPヘッダの識別子(ID値)が0であるか判定し、0である場合はステップS1507に進み、0でない場合はステップS1509に進む。TCPセッションごとに異なる識別子を与え、同一のTCPセッションに属するパケットに対して識別子を1ずつ増加させるOSでは、SYN/ACKパケットの識別子は、0である。したがって、ステップS1503では、SYN/ACKパケットの識別子により、OSの種別を識別している。
【0119】
ステップS1504において、パケットのIPヘッダの送信元アドレスをキーとしてOS種別テーブルを検索する。
ステップS1505において、ステップS1504での検索の結果、OS種別テーブルに該当するエントリがない場合はステップS1506に進み、該当するエントリがある場合はステップS1510に進む。
ステップS1506において、OS種別テーブルに新規エントリを作成する。
【0120】
ステップS1507において、OSタイプをBとし、OS種別テーブルに書き込む。
ステップS1508において、図5のステップS502に進む。パケットキャプチャ装置1201は、ステップS502以降の処理を行い、図5のENDに到達したら、ステップS1508に戻り、終了する。このとき、入力部1202、出力部1203、パケット情報取得部1211、パケットロス・遅延検出部1212、モニタ結果出力部1213、通信状態記憶部1221、およびモニタ結果記憶部1222は、それぞれ第1の実施の形態の入力部202、出力部203、パケット情報取得部211、パケットロス・遅延検出部212、モニタ結果出力部213、通信状態記憶部221、およびモニタ結果記憶部222に対応する。
【0121】
ステップS1509において、OSタイプをAとし、OS種別テーブルに書き込む。
ステップS1510において、OS種別テーブルを参照し、パケットの送信元ホストのOSのタイプを判定し、タイプがAである場合はステップS1511に進み、Aでない(Bである)場合はステップS1508に進む。
【0122】
ステップS1511において、図10のステップS1002に進む。パケットキャプチャ装置1201は、ステップS1002以降の処理を行い、図5のENDに到達したら、ステップS1508に戻り、終了する。このとき、入力部1202、出力部1203、パケット情報取得部1211、パケットロス・遅延検出部1212、モニタ結果出力部1213、通信状態記憶部1221、モニタ結果記憶部1222、および連続開始ID記憶部1223は、それぞれ第2の実施の形態の入力部702、出力部703、パケット情報取得部711、パケットロス・遅延検出部712、モニタ結果出力部713、通信状態記憶部721、モニタ結果記憶部722、および連続開始ID記憶部723に対応する。
【0123】
第3の実施の形態のパケットキャプチャ装置によれば、OSの種類を識別することで、送信ホストのOSに応じた識別方法を用いることが出来る。それにより正しく識別できる可能性が高くなる。
【0124】
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【符号の説明】
【0125】
101 パケットキャプチャ装置
102 送信ホスト
103 受信ホスト
104 タップ
201 パケットキャプチャ装置
202 入力部
203 出力部
210 処理部
211 パケット情報取得部
212 パケットロス・遅延検出部
213 モニタ結果出力部
220 記憶部
221 通信状態記憶部
222 モニタ結果記憶部
701 パケットキャプチャ装置
702 入力部
703 出力部
710 処理部
711 パケット情報取得部
712 パケットロス・遅延検出部
713 モニタ結果出力部
720 記憶部
721 通信状態記憶部
722 モニタ結果記憶部
723 連続開始ID記憶部
1201 パケットキャプチャ装置
1202 入力部
1203 出力部
1210 処理部
1211 パケット情報取得部
1212 パケットロス・遅延検出部
1213 モニタ結果出力部
1220 記憶部
1221 通信状態記憶部
1222 モニタ結果記憶部
1223 連続開始ID記憶部
1224 OS種別記憶部

【特許請求の範囲】
【請求項1】
接続要求に応じて送信された応答パケットのヘッダ情報に含まれるID値が0であるか否かに応じて、該応答パケットを送信した送信ホストは、同一セッション内におけるパケットの送信毎に、パケットのヘッダ情報に含まれるID値を順にインクリメントするタイプのオペレーションシステムであるか否かのオペレーションシステムのタイプを判定する判定手段、
を備えたことを特徴とするオペレーティングシステムの判定が可能な装置。
【請求項2】
オペレーティングシステムの判定が可能な装置が実行するオペレーティングシステムの判定方法であって、
接続要求に応じて送信された応答パケットのヘッダ情報に含まれるID値が0であるか否かに応じて、該応答パケットを送信した送信ホストは、同一セッション内におけるパケットの送信毎に、パケットのヘッダ情報に含まれるID値を順にインクリメントするタイプのオペレーションシステムであるか否かのオペレーションシステムのタイプを判定するオペレーティングシステムの判定方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2011−155706(P2011−155706A)
【公開日】平成23年8月11日(2011.8.11)
【国際特許分類】
【出願番号】特願2011−109647(P2011−109647)
【出願日】平成23年5月16日(2011.5.16)
【分割の表示】特願2008−277472(P2008−277472)の分割
【原出願日】平成20年10月28日(2008.10.28)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】